Math.random随机数获得的随机数能有多位小数点吗

j2se(57)
一、JAVA中生成随机数的方式
&&&& 1、在j2se中使用Math.random()令系统随机选取一个0~1之间的double类型小数,将其乘以一个数,比如25,就能得到一个0~25范围内的随机数,这个在j2me中没有;&&&&
Java代码&&
int&randomNumber&=&(int)&Math.round(Math.random()*(max-min)+min);&&
&&&& 2、在System类中有一个currentTimeMillis()方法,这个方法返回从号0点0分0秒到目前的一个long型的毫秒数,可作为一个随机数,还可以将其对某些数取模,就能限制随机数的范围;此方式在循环中同时产生多个随机数时,会是相同的值,有一定的局限性! &
Java代码&&
long&randomNum&=&System.currentTimeMillis();&&
int&randomNumber&=&(int)&randomNum%(max-min)+&&
&&&& 3、使用java.util.Random类来产生一个随机数发生器,这个也是我们在j2me的程序里经常用的一个取随机数的方法。它有两种形式的构造函数,分别是Random()和Random(long seed)。Random()使用当前时间即System.currentTimeMillis()作为发生器的种子,Random(long seed)使用指定的seed作为发生器的种子。随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。
如果两个Random对象使用相同的种子(比如都是25),并且以相同的顺序调用相同的函数,那它们返回值完全相同。&&&&
Java代码&&
Random&random&=&new&Random();&&
int&randomNumber&=&&random.nextInt(max)%(max-min+1)&+&&&
二、随机给定范围内N个不重复的数
&&& 1、方法一:最简单最易理解的两重循环去重&&
Java代码&&
public&static&int[]&randomCommon(int&min,&int&max,&int&n){&&
&&&&if&(n&&&(max&-&min&+&1)&||&max&&&min)&{&&
&&&&&&&&&&&return&null;&&
&&&&&&&}&&
&&&&int[]&result&=&new&int[n];&&
&&&&int&count&=&0;&&
&&&&while(count&&&n)&{&&
&&&&&&&&int&num&=&(int)&(Math.random()&*&(max&-&min))&+&&&
&&&&&&&&boolean&flag&=&true;&&
&&&&&&&&for&(int&j&=&0;&j&&&n;&j++)&{&&
&&&&&&&&&&&&if(num&==&result[j]){&&
&&&&&&&&&&&&&&&&flag&=&false;&&
&&&&&&&&&&&&&&&&break;&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&if(flag){&&
&&&&&&&&&&&&result[count]&=&&&
&&&&&&&&&&&&count++;&&
&&&&&&&&}&&
&&&&return&&&
&&& 2、方法二:利用HashSet的特征,只能存放不同的值&&
Java代码&&
&&&public&static&void&randomSet(int&min,&int&max,&int&n,&HashSet&Integer&&set)&{&&
&&&&&&&if&(n&&&(max&-&min&+&1)&||&max&&&min)&{&&
&&&&&&&&&&&return;&&
&&&&&&&}&&
&&&&&&&for&(int&i&=&0;&i&&&n;&i++)&{&&
&&&&&&&&&&&&&
&&&&&&&&&&&int&num&=&(int)&(Math.random()&*&(max&-&min))&+&&&
&&&&&&&&&&&set.add(num);&&
&&&&&&&}&&
&&&&&&&int&setSize&=&set.size();&&
&&&&&&&if&(setSize&&&n)&{&&
&&&&&&&&randomSet(min,&max,&n&-&setSize,&set);&&
&&&&&&&}&&
&&&& 3、方法三:排除已随机到的数&&
Java代码&&
public&static&int[]&randomArray(int&min,int&max,int&n){&&
&&&&int&len&=&max-min+1;&&
&&&&if(max&&&min&||&n&&&len){&&
&&&&&&&&return&null;&&
&&&&int[]&source&=&new&int[len];&&
&&&&&&&for&(int&i&=&&i&&&min+&i++){&&
&&&&&&&&source[i-min]&=&i;&&
&&&&&&&}&&
&&&&&&&int[]&result&=&new&int[n];&&
&&&&&&&Random&rd&=&new&Random();&&
&&&&&&&int&index&=&0;&&
&&&&&&&for&(int&i&=&0;&i&&&result.&i++)&{&&
&&&&&&&&&&
&&&&&&&&&&&index&=&Math.abs(rd.nextInt()&%&len--);&&
&&&&&&&&&&&&&
&&&&&&&&&&&result[i]&=&source[index];&&
&&&&&&&&&&&&&
&&&&&&&&&&&source[index]&=&source[len];&&
&&&&&&&}&&
&&&&&&&return&&&
&&& 调用实例:
Java代码&&
&&&&public&static&void&main(String[]&args)&{&&
&&&&int[]&reult1&=&randomCommon(20,50,10);&&
&&&&for&(int&i&:&reult1)&{&&
&&&&&&&&System.out.println(i);&&
&&&&int[]&reult2&=&randomArray(20,50,10);&&
&&&&for&(int&i&:&reult2)&{&&
&&&&&&&&System.out.println(i);&&
&&&&HashSet&Integer&&set&=&new&HashSet&Integer&();&&
&&&&randomSet(20,50,10,set);&&
&&&&&&&for&(int&j&:&set)&{&&
&&&&&&&&System.out.println(j);&&
&ps :第二种方法不错 &/blog/1775341
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:137073次
积分:3360
积分:3360
排名:第7834名
原创:159篇
转载:288篇
评论:21条
(3)(9)(7)(52)(69)(45)(76)(139)(45)(1)Math类中random方法与Random类都可以生成随机数,他们有什么区别
照我的理解就是,math的random只能活的一个随机数,而Random类里边还提供了很多对随机数处理的方法~~
为您推荐:
其他类似问题
扫描下载二维码6118人阅读
Java(27)
package mine.util.
import java.util.R
public class GetRandom {
// 返回ch1和ch2之间(包括ch1,ch2)的任意一个字符,如果ch1 & ch2,返回'\0'
public static char getRandomChar(char ch1, char ch2) {
if (ch1 & ch2)
// 下面两种形式等价
// return (char) (ch1 + new Random().nextDouble() * (ch2 - ch1 + 1));
return (char) (ch1 + Math.random() * (ch2 - ch1 + 1));
// 返回a到b之間(包括a,b)的任意一個自然数,如果a & b || a & 0,返回-1
public static int getRandomInt(int a, int b) {
if (a & b || a & 0)
return -1;
// 下面两种形式等价
// return a + (int) (new Random().nextDouble() * (b - a + 1));
return a + (int) (Math.random() * (b - a + 1));
package mine.util.
public class TestGetRandom {
public static void main(String[] args) {
System.out.println(&测试随机生成字符:&);
for (int i = 1; i &= 100; i++) {
System.out.print(GetRandom.getRandomChar('A', 'Z') + &
if (i % 10 == 0)
System.out.println();
System.out.println(&测试随机生成自然数:&);
for (int i = 1; i &= 100; i++) {
System.out.print(GetRandom.getRandomInt(0, 9) + &
if (i % 10 == 0)
System.out.println();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:405916次
积分:4121
积分:4121
排名:第5839名
原创:46篇
评论:173条
(1)(1)(1)(1)(11)(23)(10)}

我要回帖

更多关于 swift random 随机数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信