C# Random.Next()产生不重复随机数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Random.Next()产生不重复随机数相关的知识,希望对你有一定的参考价值。
参考技术A 获取随机数,苦恼重复问题;在循环中,rd.Next()会由于默认的时间间隔太小而产生出重复随机数,解决方案有两种:
random的构造函数提到循环外,适用于方法内部使用
Random rd = new Random();
for(int i=0;i<10;i++)
int seed=rd.Next();
2.使用guid作为随机数种子,适用于高频次调用一个生成方法或过程
//外部多次调用
for(int i=0;i<10;i++)
GetRandom();
public int GetRandom()
Random rd = new Random(Guid.NewGuid().GetHashCode());
return rd.Next();
Random.Next 不工作? [复制]
【中文标题】Random.Next 不工作? [复制]【英文标题】:Random.Next not working? [duplicate] 【发布时间】:2017-09-04 13:06:54 【问题描述】:我正在尝试制作一个随机房间选择器,但 Random.Next 似乎无法正常工作,请帮忙!
List<string> rooms = new List<string>();
rooms.Add(room1);
rooms.Add(room2);
int index = Random.Next(rooms.Count);
System.Console.WriteLine(rooms[index]);
我正在使用的系统(我认为这可能是问题所在)
Using System
Using System.Collections.Generic
Using.Collections
Using.Collections 显示为灰色。
【问题讨论】:
你需要创建一个随机生成器的实例。 @OusmaneMahyDiaw 我该怎么做? @ehh 我看了看,仍然没有任何帮助。对不起。 您是否有机会使用 Unity3d,如果您需要在标签中标记您的问题,Unity3d 有一个静态的Random
类,您可以调用 Random.Next(rooms.Count)
on 但正常。 NET 没有。
【参考方案1】:
您的问题是您想直接在Random
类上调用Next
方法,不幸的是,Random
类没有静态Next
方法。
int index = Random.Next(rooms.Count);
您需要创建Random
生成器的实例,以便调用Next
方法。
示例:
Random rand = new Random();
int index = rand.Next(rooms.Count);
System.Console.WriteLine(rooms[index]);
进一步阅读:
How do I generate a random int number in C#?
【讨论】:
这行得通。非常感谢你的朋友!以上是关于C# Random.Next()产生不重复随机数的主要内容,如果未能解决你的问题,请参考以下文章