在给定范围之间生成奇数随机数

San*_*ket 7 java random math

如何在给定范围之间生成奇数随机数..

对于Eg:对于1到6之间的范围.随机数为3或1或5

生成随机数的方法:

    Random_No = Min + (int)(Math.Random()*((Max-Min)+1))
Run Code Online (Sandbox Code Playgroud)

请参考如何在Java中生成特定范围内的随机整数?

生成奇数随机数的方法:

    Random_No = Min + (int)(Math.Random()*((Max-Min)+1))
    if(Random_No%2 ==0)
    {
          if((Max%2)==0)&&Random_No==Max)
          {
              Random_No = Random_No - 1;  
          }
          else{
              Random_No = Random_No +1;
          }
    }
Run Code Online (Sandbox Code Playgroud)

这个函数总是将2转换成3而不是1我们可以将它变成一个更随机的函数,它有时可以将2转换为3,有时转换为1吗?

Cra*_*sta 7

假设max是包容性的,我建议如下:

if (Max % 2 == 0) --Max;
if (Min % 2 == 0) ++Min;
Random_No = Min + 2*(int)(Math.random()*((Max-Min)/2+1));
Run Code Online (Sandbox Code Playgroud)

它导致所有奇数之间的均匀分布.

  • 实际上,[romedius](http://stackoverflow.com/users/1637543/romedius)做了聪明的事情; 我只是稍微清理了编辑,意外但不可避免地得到了不必要的信用.您可以查看谁在修订历史记录中执行了哪些操作的详细信息(通过"已编辑"标签单击时间). (2认同)