Java中的随机数,其中一个数字的概率更高
我知道在Java中,我可以用以下代码生成一个随机数:Java中的随机数,其中一个数字的概率更高,java,Java,我知道在Java中,我可以用以下代码生成一个随机数: Random rand=new Random() int x=rand.nextInt(1); 我感兴趣的是生成数字0或1。但是我希望这个数字1产生的概率比零高90% 我怎样才能做到这一点 谢谢 编辑: 谢谢大家。它正在工作。生成一个从0到9的随机数。如果数字为0,则返回零。如果数字是1-9,则返回1。这里有一个非常简洁的表达方式 Random rand=new Random(); int x = ((rand.nextInt(10) =
Random rand=new Random()
int x=rand.nextInt(1);
我感兴趣的是生成数字0
或1
。但是我希望这个数字1
产生的概率比零高90%
我怎样才能做到这一点
谢谢
编辑:
谢谢大家。它正在工作。生成一个从0到9的随机数。如果数字为0,则返回零。如果数字是1-9,则返回1。这里有一个非常简洁的表达方式
Random rand=new Random();
int x = ((rand.nextInt(10) == 0)) ? 0 : 1;
这可以做到:
int result;
if (Math.random() < 0.9) {
result = 1;
}
else {
result = 0;
}
int结果;
if(Math.random()<0.9){
结果=1;
}
否则{
结果=0;
}
或者更简洁地说:
int result = (Math.random() < 0.9) ? 1 : 0;
int result=(Math.random()<0.9)?1 : 0;
阅读nextInt(int)手册,其中说明:
返回从该随机数生成器的序列中提取的0(包含)和指定值(排除)之间的伪随机、均匀分布的int值。nextInt的一般约定是伪随机生成并返回指定范围内的一个int值。所有n个可能的int值以(近似)相等的概率产生。方法nextInt(int n)是通过类Random实现的,就像通过:
将代码更改为
Random rand=新的Random();
int x=兰特·耐克斯汀(10);
返回(x==0)?0 : 1;
然后再次运行它您可以这样编写它
int x = (int) (Math.random() / 0.9); // 90% chance of 0
或
用@SamG-H交叉你的,我认为int result=((rand.nextDouble()>0.9))?0 : 1; 是的,我曾想过这样写,但认为if-else方法在这里更可取,因为它允许将来有不止两种选择的可能性。不过,既然你提出了这个建议,我也添加了
?:
方法。是的,我没有抓住要点。Random rand=new Random()int x=rand.nextInt(10);返回(x==0)?0 : 1;
int x = (int) (Math.random() + 0.9); // 90% chance of 1