我有一种情况需要创建数以万计的唯一数字。但是这些数字必须是9位数字并且不能包含任何0。我目前的方法是生成9位数字(1-9)并将它们连接在一起,如果该数字不在列表中,则将其添加到其中。例如publicvoidgenerateIdentifiers(intquantity){uniqueIdentifiers=newList(quantity);while(this.uniqueIdentifiers.Count然而,在大约400,000时,这个过程确实变慢了,因为越来越多的生成数字是重复的。我正在寻找一种更有效的方法来执行此过程,我们将不胜感激。编辑:-我正在生成这些-http://ww
使用C#在给定范围内生成N个唯一数字的有效方法是什么?例如,生成6个介于1和50之间的唯一数字。一种懒惰的方法是简单地在循环中使用Random.Next()并将该数字存储在数组/列表中,然后重复并检查是否它已经存在或不存在等等。有没有更好的方法来生成一组随机但唯一的数字?为了添加更多上下文,我想使用它们的索引从集合中随机选择N个项目。谢谢 最佳答案 取一个包含50个元素的数组:{1,2,3,....50}使用随机改组数组的任何标准算法对数组进行改组。修改后的数组的前六个元素就是您要查找的内容。
我想生成一个介于1到500万之间的随机数。这个过程不一定要很快(虽然如果很快的话会很好),但它必须尽可能随机(我知道没有什么是随机的)。我有各种种子数据源。我不确定.NETRandomclass就足够了。这将用于选择中奖彩票。 最佳答案 System.Random类可能已经足够好了:Pseudo-randomnumbersarechosenwithequalprobabilityfromafinitesetofnumbers.Thechosennumbersarenotcompletelyrandombecauseadefinite
我想生成100个介于1和10之间的随机数。但这100个随机数的平均值应该是7。我该怎么做?我正在做如下://generatingrandomnumberRandomrandom=newRandom();intvalue=random.Next(1,10);并将每个值存储在一个数组中。如果数组中100个项目的平均值不是7,那么我需要再获取100个随机数。任何人都可以建议更好的方法吗? 最佳答案 publicintRandomNumberThatAveragesToSeven(){//Chosenbyfairdiceroll//Guar
人们通常会问为什么他们在使用Random时总是得到相同的数字。在他们的例子中,他们每次都无意中创建了一个Random的新实例(而不是只使用一个实例),这当然会导致始终出现相同的数字。但就我而言,我确实需要Random的多个实例,它们返回不同的数字流。在我看来,使用硬编码种子不是一个好主意,因为您在重新启动程序后会一次又一次地获得相同的值。这个怎么样:intseed1=(int)DateTime.Now.Ticks-13489565;intseed2=(int)DateTime.Now.Ticks-5564;我知道这看起来很愚蠢和天真,但它会在每次重启后避免相同的值,并且两个种子应该不同
考虑这个效果很好的方法:publicstaticboolmightBePrime(intN){BigIntegera=rGen.Next(1,N-1);returnmodExp(a,N-1,N)==1;}现在,为了满足我正在类的要求,mightBePrime必须接受BigIntegerN,但这意味着我需要一种不同的方式来生成我的随机BigIntegera。我的第一个想法是做类似BigIntegera=(N-1)*rGen.NextDouble()的事情,但是BigInteger不能乘以a双。如何生成介于1和N-1之间的随机BigInteger,其中N是BigInteger?
我的代码是在一定范围内生成经纬度的随机坐标:RandomlastLat=newRandom();RandomlastLon=newRandom();for(inti=0;i我的输出是这样的:http://img263.imageshack.us/img263/7504/capturerkv.pnghttp://img263.imageshack.us/img263/7504/capturerkv.png我的号码生成方式有问题吗? 最佳答案 Jørn的回答给出了问题,但没有给出解决方案:只需使用Random的单个实例:Randomrn
由于计算机无法选择随机数(它们可以吗?)这个随机数实际上是如何生成的。例如在C#中我们说,Random.Next()里面发生了什么? 最佳答案 您可以结帐thisarticle.根据documentation.NET中使用的具体实现基于DonaldE.Knuth的减法随机数生成器算法。有关详细信息,请参阅D.E.Knuth."TheArtofComputerProgramming,volume2:SeminumericalAlgorithms".Addison-Wesley,Reading,MA,secondedition,1981
我需要生成3个随机数,其数量等于1。我的实现不支持统一分发。:( 最佳答案 只需获得3个随机数,然后计算一个因子,即1/[你的数字之和]。最后将每个随机数乘以该因子。总和将为1。 关于c#-如何生成三个和为1的随机数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5563808/
当您需要能够从种子生成随机数,并保证它在不同版本的.NETFramework和MonoFramework以及不同的体系结构(x86、x64)中是相同的数字时,你是做什么的?我目前正在考虑将数百万个随机字节存储在一个文件中以用作此问题的临时解决方案,但我认为可能有更好的方法(希望不要太复杂)。 最佳答案 如果您需要真正可移植的实现,最好的选择可能是只使用自定义随机数生成器,例如MersenneTwisterimplementation或ColinGreen'sFastRandomNumberGenerator.通过控制实现,您可以保证