大佬教程收集整理的这篇文章主要介绍了非重复随机数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Fisher- yates随机播放算法是必经之路。其高效的改组。它在线性时间内工作。
这是算法
To shuffle an array a of n elements:
for i from n − 1 downto 1 do
j ← random integer with 0 ≤ j ≤ i
exchange a[j] and a[i]
和代码
for(int i=VALUES.length-1; i>0; i--){
int rand = (int) (Math.random()*i);
char temp = VALUES[i];
VALUES[i] = VALUES[rand];
VALUES[rand] = temp;
}
作为我项目的一部分,我需要通过提供一组数字来创建不重复的2或3位数字随机数。我不想为此实现一个列表或数组,因为我应该为每个函数调用获取1个随机数。
我尝试使用Java的SecureRandom类来做到这一点。我也从某些站点获得了帮助,但是我陷入了困境,我们可以改组VALUES并完成它吗?但是我不知道该怎么办。谁能帮我?
import java.security.SecureRandom;
public class RandomNumber {
private static final RandomNumber rnd= new RandomNumber();
private static final char[] VALUES = new char[] {
'0','1','2','3','4','5','6','7','8','9'};
private static final SecureRandom srn= new SecureRandom();
public String createID()
{
byte[] bytes = new byte[3];
srn.nextBytes(bytes);
}
以上是大佬教程为你收集整理的非重复随机数全部内容,希望文章能够帮你解决非重复随机数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。