gpt4 book ai didi

java - 生成随机数数组的简单确定性方法?

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

我正在寻找一种用数据填充大型 int[] testArray 的简单方法。方法应接受单个参数以生成确定的整数序列,但乍一看像噪声。

我想到了这样的事情,但数据可能有规律。

public int[] populate(int arraySize, int somePrime){
int[] testArray = new int[arraySize];
int offset = -100000;
long fib = 0; long fibm1 = 1; long fibm2 = 1;
//...
for(int i = offset; i< testArray.length; i++){
fib= fibm1+ fibm2;
fibm2= fibm1;
fibm1= fib;
if(i >= 0){ testArray[i] = (int) fib%somePrime; }
}

return testArray[i];
}

什么是更好的方法?

最佳答案

您可以通过使用固定种子初始化随机数生成器来实现此目的。它生成的序列对于不知道种子的人来说看起来是随机的,但您将能够通过再次使用相同的种子来重建序列。

例如:

Random r = new Random(mySeed);
int[] testArray = new int[arraySize];
for(int i=0; i<arraySize; i++) {
testArray[i] = r.nextInt();
}

更新:这种方法容易受到有人通过反复试验猜测您的种子的影响,尤其是当它是一个小数字或以其他方式可预测的时候。您还可以存储一个 secret 的固定种子,并将两者组合成一个更长的种子。但是你应该小心你如何做到这一点,因为有陷阱。参见 Deterministically combine more than one source of entropy .

关于java - 生成随机数数组的简单确定性方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856930/

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