Man*_*gle 5 random dart flutter
如何在 dart 中生成两个不同的随机数?
我使用下面的代码生成了两个随机数。
int rand1 = Random().nextInt(16);
int rand2 = Random().nextInt(16);
Run Code Online (Sandbox Code Playgroud)
if(rand1 == rand2)
// generate new random
Run Code Online (Sandbox Code Playgroud)
如何生成新的随机数直到rand1 != rand2?
我建议你采用不同的方法,循环可能会很痛苦。
// create a list say of 16 numbers.
List list = List.generate(16, (i) => i);
// shuffle it
list.shuffle();
// take the numbers now, they are always unique
int firstRandonNum = list[0];
int secondRandonNum = list[1];
Run Code Online (Sandbox Code Playgroud)
如果您需要在固定范围内有两个不同的随机数,那么最简单的方法是:
var random = Random();
var n1 = random.nextInt(16);
var n2 = random.nextInt(15);
if (n2 >= n1) n2 += 1;
Run Code Online (Sandbox Code Playgroud)
这确保了第一个数字可以采用所有 16 个值,第二个数字可以采用其余 15 个值中的任何一个,并且具有随机生成器允许的均匀分布。
对于 0..15 范围内的两个有序的不同数字,有 16 * 15 种可能的结果,并且您可能希望每个结果具有相同的概率。此代码通过随机选择第一个数字来实现此目的,然后通过确保第二个数字位于范围 [0 .. (n1 - 1)] 或范围内,将第二个数字选择为与第一个数字不同的数字之一。 [(n1 + 1) .. 15] ...通过选择范围 [0 .. 14] 中的数字并在 >= n1 时加一,将范围 [n1 .. 14] 移动到 [(n1 + 1) .. 15]。
您可以对更多数字执行此操作,但必须进行更多测试和添加。
| 归档时间: |
|
| 查看次数: |
10933 次 |
| 最近记录: |