gpt4 book ai didi

c# - 如何在不重复/复制相同数字的情况下生成随机数?

转载 作者:行者123 更新时间:2023-11-30 19:53:44 24 4
gpt4 key购买 nike

我想要它做的是生成 100 个文件,每个文件具有不同的随机大小。如果行:

long rndsize = rnd.Next(1, 2000);

生成了数字 43 然后不再生成这个数字。

在构造函数中:

CreateFiles(100);

方法:

for (int i = 0; i < numberoffiles; i++)
{
Random rnd = new Random();
long rndsize = rnd.Next(1, 2000);
FileStream fs = new FileStream(@"c:\temp\files\huge_dummy_file" + i, FileMode.CreateNew);
fs.Seek(rndsize * 1024, SeekOrigin.Begin);
fs.WriteByte(0);
fs.Close();
}

最佳答案

添加一个哈希集,当你随机数时检查它是否存在。如果它确实是另一个数字。您只生成 100 个文件,因此在最后一次迭代中您将不得不随机数大约 20 个数字,但这不会花费太长时间。

所以添加HashSet<int> existingNumbers = new HashSet<int>();

而不是 long rndsize = rnd.Next(1, 2000);

做:

int rndsize;
do {
rndsize = rnd.Next(1, 2000);
} while (existingNumbers.Contains(rndsize));
existingNumbers.Add(rndsize);

关于c# - 如何在不重复/复制相同数字的情况下生成随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46882688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com