gpt4 book ai didi

algorithm - 给定一个数字,产生另一个每次都相同且与所有其他结果不同的随机数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:37 25 4
gpt4 key购买 nike

基本上,我想帮助设计一种算法,该算法采用给定数字,并返回与第一个数字无关的随机数。规定是 a) 对于相似的输入数字,给定的输出数字将始终相同,并且 b) 在一定范围内(例如 1-100),所有输出数字都是不同的。即,没有两个小于 100 的不同输入数字会给出相同的输出数字。

我知道这很容易做到,方法是创建一个有序的数字列表,随机打乱它们,然后返回输入的索引。但我想知道是否可以在没有任何缓存的情况下完成。也许使用某种哈希算法?这主要是因为如果可能输出的范围要大得多,比如 10000000000,那么生成整个范围的数字然后随机打乱它们将是可笑的,如果你只想从

用什么语言做的并不重要,我只是想知道这是否可能。我已经考虑这个问题很长时间了,除了我已经想出的解决方案之外,我想不出解决方案。

编辑:我只是有另一个想法;如果有另一种算法返回与第一个算法相反的算法,那将很有趣。这是否可能将是一个值得探索的有趣挑战。

最佳答案

这听起来像是一个非重复随机数生成器。有几种可能的方法。

如本 article 中所述,我们可以通过选择一个质数p并满足p % 4 = 3足够大(大于输出范围内的最大值)生成它们这样:

int randomNumberUnique(int range_len , int p , int x)
if(x * 2 < p)
return (x * x) % p
else
return p - (x * x) % p

对于 [0 , p) 范围内的输入,此算法将覆盖 [0 , p) 中的所有值。

关于algorithm - 给定一个数字,产生另一个每次都相同且与所有其他结果不同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418358/

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