关于java产生随机数的问题

炫紫幻羽 2014-11-03 05:19:19
java能排除特定值产生随机数吗?
看来API中Random类,貌似没这功能
别告诉我产生好以后遍历查找排除
java产生的随机数会出现重复吗?
还有用Random类产生随机数能指定范围吗?
Random num = new Random();
a[i] = num.nextInt()
这样产生的随机数有点大的夸张
...全文
625 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_22770085 2014-11-13
  • 打赏
  • 举报
回复
我也正在做随机数的问题。很郁闷。我想大概就是 int x=(int)(Math.random()*n); 这样子来确定范围
tacono 2014-11-12
  • 打赏
  • 举报
回复
Math.random()产生随机数 用一个变量储存 然后通过if来筛选
liumoujie3 2014-11-12
  • 打赏
  • 举报
回复
自己动点脑,这事MS不难
炫紫幻羽 2014-11-11
  • 打赏
  • 举报
回复
[quote=引用 15 楼 Android_iPhone 的回复:] 今天一下子开窍了 上来正好看见你回复,这个算法才对嘛!其实挺简单的,但之前被你的回复搞糊涂了,一开始你回复的算法里的那个取余符号算什么啊!害我两天没事就在想你的算法
日知己所无 2014-11-07
  • 打赏
  • 举报
回复
给你写的完整的示例,简单测试了一下,正数应该没啥问题,随机性也还可以
import java.util.Random;

public class RandomTest {

    public static void main(String[] args) {
        for (int ii = 0; ii < 100; ii++) {
            System.out.println(getRandomNumber1(0, 9));
            System.out.println(getRandomNumber2(0, 9));
        }
    }

    /**
     * nextDouble() 方法返回小于 1 但大于或等于 0 的值。 为了生成某个范围内的随机整数,可使用以下公式:
     * (int)((upperbound - lowerbound + 1) * nextDouble() + lowerbound) 这里,upperbound
     * 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
     */
    public static int getRandomNumber1(int lowerbound, int upperbound) {
        return (int) ((upperbound - lowerbound + 1) * Math.random()/*(new Random()).nextDouble()*/ + lowerbound);
    }

    public static int getRandomNumber2(int lowerbound, int upperbound) {
        return (new Random()).nextInt(upperbound - lowerbound + 1) + lowerbound;
    }
}
weiyushigejue 2014-11-07
  • 打赏
  • 举报
回复
个人感觉Math.random()用这个产生随机数比较方便一点
jikeizod 2014-11-06
  • 打赏
  • 举报
回复
使用Math.random()
  • 打赏
  • 举报
回复
排除特定值只能每次产生的随机数判断一下了,如果是的话放弃这个数字重新随机一个。
lliiqiang 2014-11-05
  • 打赏
  • 举报
回复
先产生随机数,然后看看是否不符合要求,不符合要求就再产生新的随机数直到产生的随机数符合要求.
「已注销」 2014-11-05
  • 打赏
  • 举报
回复
0.0 <= Math.random() < 1.0 这个随机数很有用丫,根据不等式的知识,值域可以扩大多少倍都行。
guanzi212 2014-11-04
  • 打赏
  • 举报
回复
用set是去除重复项的正解,没学set之前我还是用的数组的for循环中套while循环,然后每次取值后将该值改成0,类似下面 for (int i = 0; i < SysRedBallNum.length; i++) { while (true) { int index = r.nextInt(32); if (RedBall[index]!=0) { SysRedBallNum[i]=RedBall[index]; RedBall[index]=0; break; } } }
  • 打赏
  • 举报
回复
//生成6位随机数 int random=(int)((Math.random()*9+1)*100000); 这样只生成的6位数的随机数
carmen_山海 2014-11-04
  • 打赏
  • 举报
回复
可不可以发表意见。
qq_22924751 2014-11-04
  • 打赏
  • 举报
回复
int s = random.nextInt(50)+50; System.out.println(s); 控制范围
炫紫幻羽 2014-11-04
  • 打赏
  • 举报
回复
Random random = new Random(); int s = random.nextInt(max) % (max - min + 1) + min; 这个算法是什么意思,抱歉我数学老师死的早
LJ_KB 2014-11-03
  • 打赏
  • 举报
回复
可以生成指定范围的随机数,但是随机数肯定会有可能重复,不想生成重复的话,可以用Set来装生成的数字。 Math.random()方法是一个可以产生[0.0,1.0]区间内的一个双精度浮点数的方法 产生一个100以内的整数:int x=(int)(Math.random()*100); 产生一个1-50之间的随机数:int x=1+(int)(Math.random()*50)
乔不思 2014-11-03
  • 打赏
  • 举报
回复
你这个特定值 指的是什么? 请问 随机数不可能重复么? Random 的API你在看看 nextInt(int n) ---产生 0->n之间的随机数,包前部包后.这个就足够了啊,
日知己所无 2014-11-03
  • 打赏
  • 举报
回复
可以自己通过计算来控制具体的范围,示例如下: Random random = new Random(); int s = random.nextInt(max) % (max - min + 1) + min;

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧