当前位置: 首页 > 知识库问答 >
问题:

在android studio中使用唯一/特定数字的随机数生成器

娄振
2023-03-14

我能够使用(max-min)min公式创建1-10范围内的随机数。

这是用于在1-10之间制作随机数的代码。

            @Override
            public void onClick(View view) {
                Random random = new Random (  );
                int val = random.nextInt (11-1)+1;
                textview_random_number.setText ( Integer.toString ( val ) );

这是给10-99的

            @Override
            public void onClick(View view) {
                Random random_two_digits = new Random (  );
                int val_two_digits = random_two_digits.nextInt (100-10)+10;
                textView_two_digits.setText ( Integer.toString ( val_two_digits ) );

但是我想生成具有特定数字或唯一数字的随机数。

以下是具体数字。

128 137 146 236 245 290 380 470 489 560 678 579

129 138 147 156 237 246 345 390 480 570 679 589

120 139 148 157 238 247 256 346 490 580 670 689

130 149 158 167 239 248 257 347 356 590 680 789

140 159 168 230 249 258 267 348 357 456 690 780

123 150 169 178 240 259 268 349 358 457 367 790

124 160 179 250 269 278 340 359 368 458 467 890

125 134 170 189 260 279 350 369 378 459 567 468

126 135 180 234 270 289 360 379 450 469 478 568

100 119 155 227 335 344 399 588 669

200 110 228 255 336 499 660 688 778

300 166 229 337 355 445 599 779 788

400 112 220 266 338 446 455 699 770

500 113 122 177 339 366 447 799 889

600 114 277 330 448 466 556 880 899

700 115 133 188 223 377

共有1个答案

唐烨煜
2023-03-14

你可以将所有这些数字存储在一个数组中,并使用你已经有的随机函数在数组中选择一个数字。这应该可行:

int[] array = new int[]{128, 137, 146, 236, 245, 290, 380, 470, 489, 560, 678, 579};
final int min = 0;
final int max = array.length - 1;
final int random = new Random().nextInt((max - min) + 1) + min;
int randomIntInArray = array[random];

较短版本:

int[] array = new int[]{128, 137, 146, 236, 245, 290, 380, 470, 489, 560, 678, 579};
final int random = new Random().nextInt(array.length);
int randomIntInArray = array[random];

请注意,< code>Random不应该用于任何重要的东西,因为它不是加密安全的。您可以使用< code>SecureRandom来获得更多不可预知的结果。参见文档。

 类似资料:
  • 问题内容: 我正在尝试获取0到100之间的随机数。但是我希望它们是唯一的,而不是在序列中重复。例如,如果我有5个数字,它们应该是82,12,53,64,32而不是82,12,53,12,32(我使用了这个数字),但是它在序列中生成相同的数字。 问题答案: Add each number in the range sequentially in a list structure. Shuffle i

  • 问题内容: 我想在0-500范围内创建10个随机数。但是问题是我希望这些数字是唯一的。对于2个随机数,我可以创建以下内容: 但是,如果我这样做10次,我认为它会堆叠。我之所以这样说是因为我正在尝试创建一个巨大的算法,该算法试图进行连续评估,我希望连续获取10个随机且唯一的数字。我不知道该怎么办。有什么想法或建议吗? 问题答案: 每当您使用Fisher-Yates shuffle 来使用数字时,请从

  • 如何在1到9之间生成9个随机数,而不重复,一个接一个。它类似于:假设生成的第一个随机数是4,那么下一个随机数必须在[1,9]{4}中。我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复。但在更糟糕的情况下,比如我们已经生成了6个数字,我们必须再生成3个数字,这个过程会有点慢。当范围从[1,9]更改为[1,1000]时,这种方法听起来不正确。有人能提出一个替代方法吗。

  • 问题内容: 我正在尝试使用下面的代码来生成10位唯一的随机数。根据我的要求,我必须创建大约5000个唯一编号。这无法正常工作。它还会生成- ve数字。同样,有时生成的数字中缺少一两位数字,导致8或9个数字而不是10。 问题答案: 我认为您获得8/9位数字值和负数的原因是您要添加一个(带符号的64位值),该值可能大于的正数范围(32位值)。 该值正在溢出,处于负32位范围内或几乎缠绕到(由于是带符号

  • 问题内容: 我正在开发一个需要生成一些唯一编号的应用程序,并且实际上没有预定义的限制,因此使用Java UUD生成器并且运行良好。现在,我们对生成12位唯一的随机数有了新的要求。 谁能指出我实现这一目标的一些好的方法/算法,因为我看不到UUID生成数字中的任何可能性。 提前致谢 问题答案: 通过调用生成每个数字。为了保持唯一性,您可以通过将随机数保存在集合中并检查集合中是否包含您每次生成的数字来跟

  • 问题内容: 我上面有一个方法,该方法应生成用户指定的随机元素数组。随机生成的整数应介于0到10之间(含0和10)。我能够生成随机整数,但是我遇到的问题是检查唯一性。我尝试检查唯一性是在上面的代码中,但是数组仍然包含整数的重复项。我做错了什么,有人可以给我提示吗? 问题答案: 您确实找到重复的值。但是,您将其替换为另一个可能重复的随机数。相反,请尝试以下操作: 但是,这种方法效率低下。我建议列出数字