如何在Java中生成一个随机数,但偏向于1个特定的数字
//Generates a random number but doesn't allow the same number be repeated
for (int i = 0; i < questions1.length; i++)
{
//random number
int r = (int)(Math.random() * i);
temp = index[r];
index[r] = index[i];
index[i] = temp;
}
我怎样才能特别喜欢1号
# 1 楼答案
假设你的目标范围是[0,6],你给出的可能性是1的两倍。我会给你两种不会侵蚀你记忆的方法:
# 2 楼答案
例如,如果你想要一个介于1到6之间的随机数,但是想要选择3的可能性是其他任何数字的两倍,一个非常简单的解决方案是创建一个包含7个索引的数组。1、2、4、5、6各持有一个索引。3包含两个指数。现在选择一个介于0和6之间的随机数,并返回该索引中的任何数字
使用这种方法,您可以为任意范围的数字提供您想要的任何权重
几乎可以肯定还有更优雅的解决方案,但这将完成工作
# 3 楼答案
你可以建立一个
List
并按照你想要的比例填充你想要的数字。然后使用Collections.shuffle