Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的随机数,其中一个数字的概率更高_Java - Fatal编程技术网

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) =

我知道在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) == 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