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()产生不重复随机数的主要内容,如果未能解决你的问题,请参考以下文章

C#添加随机因子,获得随机数

C# 随机3个数 怎么判断它们不相等

如何让C#产生不重复的随机数

.net 下用C#产生一个永不重复10位随机数

C#中能得到随机数的函数是啥啊,怎么才能将随机输出的随机数赋给一个变量?

C# Random 生成不重复随机数