Random(intseed)保证什么?我正在从事一个项目,该项目依赖于将用户的子集随机分配(没什么花哨的,只是统一的)到更大的集合。每个用户都有一个从同构到整数的唯一标识符。据我所知,有两种方法可以做到这一点。在用户和上面较大集合的键控元素之间创建一个数据库连接表,并为每个用户创建一个函数。这对我的需求来说有点不切实际,所以我宁愿这样做......在运行时,通过类似的函数确定子集,但使用唯一的用户ID作为种子值,并将该集合保存在内存中。下次需要时从更大的集合中重新创建它。所以我的问题是,如果我使用.NETRandom对象创建第二个使用user-id作为种子值的函数,Microsoft是否保证将来不会更改Random算法?即所有newRandom(n)的Next()序列在所有机??器上都永远相同吗?或者,我可以创建自己的随机生成器并将其与我的代码打包在一起。事实上,这就是我可能会做的,但我仍然很想知道答案。微软不能保证他们的代码永远不会改变,因为代码改进发生在已识别的错误、问题或商品上——但是,到目前为止,代码没有改变,如果你不改变框架,你应该总是有相同的功能。所以把它当作它不会改变一样对待......但是当你决定升级框架时,确保它仍然有效。不,明确不保证版本之间的兼容性:不保证Random类中随机数生成器的实现在.NETFramework的主要版本中保持相同。因此,您的应用程序代码不应假定相同的种子会在不同版本的.NETFramework中产生相同的伪随机序列。您可以使用一个非常大的素数来生成一个看似非常随机的数字序列,该序列将始终是相同的序列:p=VeryLargePrimeNumberq=任何小于p的数字(但不要太小)n*q)%p第一个是种子。可能某种加密更适合……也就是说,每次迭代都对种子位进行签名,并且在下一次迭代时对先前的签名进行签名,依此类推。假设上下文保持不变——即底层代码保持不变——为伪随机数生成器播种固定值n应该会导致生成器每次都生成完全相同的伪随机序列。供应商-在本例中为Microsoft-可以保证PRSG的实施永远不会改变。但是,他们没有:他们为什么要这样做?他们指出PRNG类似于熵生成。如果您使用PRNG生成可重复的唯一标识符,那么您找错了树。以上就是C#学习教程:Random(intseed)保证什么?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
