C# 用c语言生成整数随机数#

C# 用c语言生成整数随机数#,c#,random,C#,Random,我想生成4位随机数,并将其作为序列号放入文本框中。如何做到这一点,并在某种程度上确保不会获得重复的数字?如果您希望确保不会获得重复的数字,请使用Guid: Guid guid = Guid.NewGuid(); // however a Guid is not a 4 digit integer 如果需要随机数,请使用random: Random rnd = new Random(); int randomInt = rnd.Next(1000, 10000) 但是请注意,您不应该在循环

我想生成4位随机数,并将其作为序列号放入文本框中。如何做到这一点,并在某种程度上确保不会获得重复的数字?

如果您希望确保不会获得重复的数字,请使用
Guid

Guid guid = Guid.NewGuid();  // however a Guid is not a 4 digit integer

如果需要随机数,请使用
random

Random rnd = new Random();
int randomInt = rnd.Next(1000, 10000)
但是请注意,您不应该在循环中创建随机实例,因为它是用当前时间播种的。否则会得到重复的值。因此,要么将随机实例作为此方法的参数,要么使用字段/属性,要么在外部创建的循环中使用相同的实例

获取唯一随机数的最简单方法是在已有随机数的情况下创建新的随机数。

如果要确保不会获得重复的随机数,请使用
Guid

Guid guid = Guid.NewGuid();  // however a Guid is not a 4 digit integer

如果需要随机数,请使用
random

Random rnd = new Random();
int randomInt = rnd.Next(1000, 10000)
但是请注意,您不应该在循环中创建随机实例,因为它是用当前时间播种的。否则会得到重复的值。因此,要么将随机实例作为此方法的参数,要么使用字段/属性,要么在外部创建的循环中使用相同的实例


获取唯一随机数的最简单方法是在已有随机数的情况下创建新的随机数。

最好的方法是使用random类:

Random random = new Random();
int result = random.Next(1000, 10000);
您还可以使用
RNGCryptoServiceProvider
类,它提供了更安全的随机数:

RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();
byte[] bytes = new byte[4];
csp.GetBytes(bytes);
int yourNum = bytes.Select(x => x % 10).Aggregate(0, (a, b) => (a * 10) + b);

最好的方法是使用Random类:

Random random = new Random();
int result = random.Next(1000, 10000);
您还可以使用
RNGCryptoServiceProvider
类,它提供了更安全的随机数:

RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();
byte[] bytes = new byte[4];
csp.GetBytes(bytes);
int yourNum = bytes.Select(x => x % 10).Aggregate(0, (a, b) => (a * 10) + b);

Random类用于创建随机数。(当然是伪随机的。)

例如:

Random rnd = new Random();
int num = rnd.Next(1000, 10000); //creates number from 1000 to 9999

您可以使用HashSet存储生成的数字,并检查replicate

Random类用于创建随机数字。(当然是伪随机的。)

例如:

Random rnd = new Random();
int num = rnd.Next(1000, 10000); //creates number from 1000 to 9999

您可以对存储生成的数字使用HashSet并选中duplicate

最简单的方法是按顺序生成所有可能选项的列表并将其洗牌。然后,在洗牌列表后,只需“按顺序”浏览列表,序列将是随机且不重复的

List<int> numbers = new List<int>(Enumerable<int>.Range(0,10000);

HelperFunctions.Shuffle(numbers); //There are plenty of examples of how to shuffle the list on this site.

foreach(var number in numbers)
{
    Console.WriteLine(number.ToString("D4"); //Displays random numbers from 0000 to 9999 but never repeats
}
列表编号=新列表(可枚举范围(010000);
HelperFunctions.Shuffle(numbers);//在这个网站上有很多关于如何洗牌列表的例子。
foreach(数值中的变量编号)
{
Console.WriteLine(number.ToString(“D4”);//显示0000到9999之间的随机数,但从不重复
}

最简单的方法是按顺序生成一个包含所有可能选项的列表并将其洗牌。洗牌后,只需按顺序浏览列表,序列将是随机且不重复的

List<int> numbers = new List<int>(Enumerable<int>.Range(0,10000);

HelperFunctions.Shuffle(numbers); //There are plenty of examples of how to shuffle the list on this site.

foreach(var number in numbers)
{
    Console.WriteLine(number.ToString("D4"); //Displays random numbers from 0000 to 9999 but never repeats
}
列表编号=新列表(可枚举范围(010000);
HelperFunctions.Shuffle(numbers);//在这个网站上有很多关于如何洗牌列表的例子。
foreach(数值中的变量编号)
{
Console.WriteLine(number.ToString(“D4”);//显示0000到9999之间的随机数,但从不重复
}
使用的列表=新列表();
随机=新随机();
foreach(你想做的事情)
{
int current=random.Next(10009999);
while(已使用。包含(当前))
当前=随机。下一个(10009999);
//做点什么
已使用。添加(当前);
}
或者在此基础上进行类似的更改,以满足您的需要

List used=new List();
随机=新随机();
foreach(你想做的事情)
{
int current=random.Next(10009999);
while(已使用。包含(当前))
当前=随机。下一个(10009999);
//做点什么
已使用。添加(当前);
}
或类似的变体,以满足您的需求

如下:

var random = new Random();

var numbers = new List<int>(0);

for (var i = 0; i < 4; i++)
{
    var number = random.Next(1000, 10000);

    if (numbers.Contains(number))
    {
        i--;
        continue;
    }

    numbers.Add(number);
}

tbx1.Text = numbers[0].ToString();
tbx2.Text = numbers[1].ToString();
tbx3.Text = numbers[2].ToString();
tbx4.Text = numbers[3].ToString();
var random=new random();
变量编号=新列表(0);
对于(变量i=0;i<4;i++)
{
var编号=随机。下一个(1000,10000);
if(数字。包含(数字))
{
我--;
继续;
}
数字。添加(数字);
}
tbx1.Text=numbers[0].ToString();
tbx2.Text=numbers[1].ToString();
tbx3.Text=数字[2].ToString();
tbx4.Text=数字[3].ToString();
像这样:

var random = new Random();

var numbers = new List<int>(0);

for (var i = 0; i < 4; i++)
{
    var number = random.Next(1000, 10000);

    if (numbers.Contains(number))
    {
        i--;
        continue;
    }

    numbers.Add(number);
}

tbx1.Text = numbers[0].ToString();
tbx2.Text = numbers[1].ToString();
tbx3.Text = numbers[2].ToString();
tbx4.Text = numbers[3].ToString();
var random=new random();
变量编号=新列表(0);
对于(变量i=0;i<4;i++)
{
var编号=随机。下一个(1000,10000);
if(数字。包含(数字))
{
我--;
继续;
}
数字。添加(数字);
}
tbx1.Text=numbers[0].ToString();
tbx2.Text=numbers[1].ToString();
tbx3.Text=数字[2].ToString();
tbx4.Text=数字[3].ToString();

这将为您提供一个4位随机数

Random random= new Random();   

int RnNum = random.Next(1000,9999);

如果您想确保它不会被复制,那么将生成的随机值存储在会话中,并比较它是否已经生成。当然,还有其他方法,如果您不想以会话方式执行,请写入文本文件或其他内容,这将给您一个4位随机数

Random random= new Random();   

int RnNum = random.Next(1000,9999);

如果您想确保它不会被复制,那么将生成的随机值存储在会话中并比较它是否已经生成。当然,还有其他方法,如果您不想以会话的方式执行,请写入文本文件或其他内容,您需要自己在字典中记录已生成的数字或者Hashset,比如

 HashSet<int> generatedValues = new HashSet<int>();
 Random rnd = new Random();
 int randomInt = rnd.Next(1000,9999);
 while(generatedValues.Contains(randomInt))
 {
    randomInt = rnd.Next(1000,9999);
 }
  generatedValues.Add(randomint);
HashSet generatedValues=new HashSet();
随机rnd=新随机();
int randomInt=rnd.Next(10009999);
while(generatedValues.Contains(randomInt))
{
randomInt=rnd.Next(10009999);
}
generatedValues.Add(randomint);

您需要自己记录在字典或哈希集中生成的数字。如

 HashSet<int> generatedValues = new HashSet<int>();
 Random rnd = new Random();
 int randomInt = rnd.Next(1000,9999);
 while(generatedValues.Contains(randomInt))
 {
    randomInt = rnd.Next(1000,9999);
 }
  generatedValues.Add(randomint);
HashSet generatedValues=new HashSet();
随机rnd=新随机();
int randomInt=rnd.Next(10009999);
while(generatedValues.Contains(randomInt))
{
randomInt=rnd.Next(10009999);
}
generatedValues.Add(randomint);

Guid
s本身不是随机的。@newstackexchange实例他没有说它们在哪里,他说它们在哪里