当前位置: 首页 > 面试题库 >

非重复随机数

归建安
2023-03-14
问题内容

作为我项目的一部分,我需要通过提供一组数字来创建不重复的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);

     }

问题答案:

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;
    }


 类似资料:
  • 问题内容: 我想创建一组随机数,在Java中没有重复项。 例如,我有一个数组来存储10,000个从0到9999的随机整数。 这是我到目前为止的内容: 但是上面的代码创建重复项。如何确保随机数不重复? 问题答案: 例如:

  • 问题内容: 我有以下功能 基本上,我正在创建一个介于1到10之间的随机数,并通过将其添加到数组中并检查新创建的数字来检查该数字是否已创建。我通过将其添加到变量中来调用它。 这可行,但是在Chrome浏览器中出现以下错误: 我猜这是因为我在内部调用了太多次该函数。这意味着我的代码不好。 有人可以在逻辑上帮助我吗?确保我的数字不重复的最佳方法是什么? 问题答案: 如果我理解正确,那么您只是在寻找数字1

  • 问题内容: 好的,这是一个比听起来更棘手的问题之一,所以我转向堆栈溢出,因为我想不到一个好的答案。这就是我想要的:我需要Python以随机顺序生成一个从0到1,000,000,000的简单数字列表,以用于序列号(使用随机数,这样您就无法知道已分配了多少个数字或进行了计时攻击也很容易,例如,猜测将要发生的下一个攻击)。这些数字与链接到它们的信息一起存储在数据库表(索引)中。生成它们的程序不会永远运行

  • 本文向大家介绍如何在Python中生成非重复随机数?,包括了如何在Python中生成非重复随机数?的使用技巧和注意事项,需要的朋友参考一下 接下来的程序会生成10个介于1到100之间的随机非重复整数。它会在给定的时间间隔内生成一个随机整数,如果先前未添加过该整数,则将其添加到列表中。

  • 我已经生成了一个从1-100的随机数,但不会出现重复的数字(例如,如果10来一,那么它不会再来了。)(这个不行) 我如何使用生成的出现在屏幕底部,使用户必须知道什么数字是1-100所有的数字是做了,然后没有数字生成 有谁能帮帮我吗?

  • 我想生成1到4范围内的随机数,4包括。 以下是我的代码: 然而,我在循环中运行上述代码,不希望重复随机数。现在发生的事情通常是: 作为我的输出。 在这里,虽然数字在范围(1-4)内是随机的,但在前3次迭代中经常像数字“1”一样重复。 我正在寻找的是一种在循环中获得非重复随机数的方法。我知道的一个简单的方法是在当前迭代和比较之前保留最后一个随机数,但我相信一定有更好的解决方案。 提前谢谢。