我想要一个随机生成的 6 位数字。保证我永远不会调用这个函数超过 1000 次。每次调用该函数时,它都应该能够返回不同的数字。
我想像 nextRandom
一样调用这个函数,不带任何参数。 Haskell 有没有适合我的图书馆?我无法维持种子。 Haskell 可以使用当前时间作为种子
。
更新:问题的背景。
我正在生成一个图形(点格式),我想确保所有顶点都有不同的标签。我可以通过附加生成时间作为标签来做到这一点,但我被这个想法所吸引,通过生成随机数来做到这一点。
最佳答案
纯函数(如 nextRandom
,不带参数)就像数学函数。每次调用时,它们都会使用相同的参数产生相同的结果。
所以你所要求的是不可能的,因为
- 您期望随机数。
- 您希望该函数具有某种内存来知道已经生成了哪些数字。
只需采用 haskell 方式,并将种子或随机生成器传递给函数,或使用 monad。如果有帮助,您可以提前创建 1000 个号码,然后从列表中检索它们。
关于Haskell 函数生成随机数,每次该数字都与前一个不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17390077/