当前位置:编程学习 > JAVA >>

java如何抽取指定范围的随机数

如题,java如何抽取指定范围的随机数,比如说,现在有个数组{"张三","李四","王二","李逵","张飞"}我想抽取起其中的两个,如何在这个数组中实现随机抽取呢,random函数是实现数字范围的随机数。但是不知道怎么用random函数实现抽取上述指定数组的随机数 --------------------编程问答-------------------- random函数是实现数字范围的随机数
先得到随机数,然后求模数(%数组长度),得到数组下标,然后去访问对应下标值。 --------------------编程问答-------------------- nextInt(array.length); --------------------编程问答-------------------- String[] s={"张三","李四","王二","李逵","张飞"}
int x;
x/5=Math.random();
x=5*Math.random();
x就是要取的下标
当然,这样是有问题的,因为Math.random();产生的数是0到0.99999999999..的,所这就需要你做一下处理了。
另外取两个数的话,那么就得先取出一个,然后再从剩余的下面再取出一个。
--------------------编程问答-------------------- 谢谢楼上各位 我是这样写的
public class TestRandomArray {
public static void main(String[] args) {
int []a=new int[3];//抽取多少人
String test[]={"张三","李四","王二","李逵","张飞"};//参加抽奖的人数
       for(int i=0;i<3;i++){
        a[i]=(int) (Math.random()*4+1);
        for(int j=0;j<i;j++){
        if (a[j] == a[i])  
               {  
                   i--;  
                   break;  
               }  
        }
       }
       for(int i=0;i<3;i++){
        System.out.println(a[i]);
        System.out.println(test[a[i]]);
       }
}
}
  
--------------------编程问答-------------------- 。。。。。。。。。。。。。。 --------------------编程问答-------------------- 不重复随机数
import java.util.Arrays;
import java.util.Scanner;

/**
 * 如题,java如何抽取指定范围的随机数, 比如说,现在有个数组{"张三","李四","王二","李逵","张飞"} 我想抽取起其中的两个,
 * 如何在这个数组中实现随机抽取呢, random函数是实现数字范围的随机数。 但是不知道怎么用random函数实现抽取上述指定数组的随机数
 * 
 * @author Administrator
 * 
 */
public class RandomDemo {
public static void main(String[] args) {
/**
 * 此方法产生不重复随机数
 */
Scanner input =new Scanner(System.in);
System.out.print("请输入抽取随机数的个数:");
int count = input.nextInt();
String []str = {"张三","李四","王二","李逵","张飞"};
boolean []used =new boolean[str.length];//默认是false
String [] result = new String[count];
for(int i =0;i<count;i++){
int r;
do{
r =(int)(Math.random()*str.length);
}while(used[i]);
result[i]=str[r];
used[i]=true;
}
System.out.println(Arrays.toString(result));
}
}
--------------------编程问答--------------------
引用 6 楼 jxj807158342 的回复:
不重复随机数
Java code?1234567891011121314151617181920212223242526272829303132import java.util.Arrays;import java.util.Scanner; /** * 如题,java如何抽取指定范围的随机数, 比如说,现在有个数组{"张三","李四","王二","李逵","张飞"} ……


不重复 被取出来的数据 再数组里删掉不就行了 --------------------编程问答-------------------- 哈哈,很多方法 --------------------编程问答--------------------
引用 6 楼 jxj807158342 的回复:
不重复随机数
Java code?1234567891011121314151617181920212223242526272829303132import java.util.Arrays;import java.util.Scanner; /** * 如题,java如何抽取指定范围的随机数, 比如说,现在有个数组{"张三","李四","王二","李逵","张飞"} ……

数组长度不是固定不变吗? --------------------编程问答--------------------
引用 6 楼 jxj807158342 的回复:
不重复随机数
Java code?1234567891011121314151617181920212223242526272829303132import java.util.Arrays;import java.util.Scanner; /** * 如题,java如何抽取指定范围的随机数, 比如说,现在有个数组{"张三","李四","王二","李逵","张飞"} ……
大哥你看看吧,有重复的啊 --------------------编程问答--------------------
引用 10 楼 lk_lxn 的回复:
引用 6 楼 jxj807158342 的回复:不重复随机数
Java code?1234567891011121314151617181920212223242526272829303132import java.util.Arrays;import java.util.Scanner; /** * 如题,java如何抽取指定范围的随机数, 比如说,现在有个数组{"张……


Random random = new Random();
List<Integer> randomArrray = new ArrayList<Integer>();

String[] strArray = {"张三","李四","王二","李逵","张飞"};


System.out.print("原始数组数据项内容:");
for(int i = 0; i < strArray.length; i++) {
System.out.print(strArray[i] + "\t");
}
System.out.println();


while(randomArrray.size() <= 4) {
//显示0到4的随机整数
int randomNum = random.nextInt(5);
if(!(randomArrray.contains(randomNum))) {
randomArrray.add(randomNum);
}
}

Iterator<Integer> it = randomArrray.iterator();


System.out.print("随机后的排序:");
while(it.hasNext()) {
//System.out.print(it.next() + "\t");
System.out.print(strArray[it.next()] + "\t");
} --------------------编程问答--------------------
引用 10 楼 lk_lxn 的回复:
引用 6 楼 jxj807158342 的回复:不重复随机数
Java code?1234567891011121314151617181920212223242526272829303132import java.util.Arrays;import java.util.Scanner; /** * 如题,java如何抽取指定范围的随机数, 比如说,现在有个数组{"张……

不好意思写错了,重新发一下
import java.util.Arrays;
import java.util.Scanner;

/**CSDN提问
 * 如题,java如何抽取指定范围的随机数, 比如说,现在有个数组{"张三","李四","王二","李逵","张飞"} 我想抽取起其中的两个,
 * 如何在这个数组中实现随机抽取呢, random函数是实现数字范围的随机数。 但是不知道怎么用random函数实现抽取上述指定数组的随机数
 * 
 * @author Administrator
 * 
 */
public class RandomDemo {
public static void main(String[] args) {
/**
 * 此方法产生不重复随机数
 */
Scanner input =new Scanner(System.in);
System.out.print("请输入抽取随机数的个数:");
int count = input.nextInt();
String []str = {"张三","李四","王二","李逵","张飞"};
boolean []used =new boolean[str.length];//默认是false
String [] result = new String[count];
for(int i =0;i<count;i++){
int r;
do{
r =(int)(Math.random()*str.length);
}while(used[r]);
result[i]=str[r];
used[r]=true;
}
System.out.println(Arrays.toString(result));
}
}
--------------------编程问答-------------------- 可以利用Collections类的shuffle方法。

import java.util.*;
public class RandomNumber
{
public static final int NUM=3; // 随机取3个.
public static void main(String[] args)
{
String[] test={"张三","李四","王二","李逵","张飞"};//原数组

List<Integer> list=new ArrayList<Integer>(); //存放 0--4.
for(int i=0;i<test.length;i++)
{
list.add(i); //自动装箱。
}

Collections.shuffle(list); //打乱顺序.
for(int i=0;i<NUM;i++) //取前NUM个数取自打乱的list.
{
String s = test[list.get(i)]; //自动拆箱.
System.out.println(" s is "+s);
}
}
}
--------------------编程问答--------------------
引用 12 楼 jxj807158342 的回复:
引用 10 楼 lk_lxn 的回复:引用 6 楼 jxj807158342 的回复:不重复随机数
Java code?1234567891011121314151617181920212223242526272829303132import java.util.Arrays;import java.util.Scanner; /** * 如题,java如何抽取指定范围……
哈哈 没事,谢谢你了,还有一个问题是想问你一下,我是这样写的
public class TestRandomArray {
public static void main(String[] args) {
int arr[]=new int[6];//抽取多少人
String test[]={"3732","9339","5808","0530","1616","0575","5256","1152","6747","6510","7233","2749","9211"};//参加抽奖的人数
       for(int i=0;i<6;i++){
        arr[i]=(int) (Math.random()*12+1);
        for(int j=0;j<i;j++){
        if (arr[j] == arr[i])  
               {  
                   i--;  
                   break;  
               }  
        }
       }
       for(int i=0;i<6;i++){
        System.out.println(arr[i]);
        System.out.println(test[arr[i]]);
       }
}
}
  

function over1(){
document.getElementById("txt0").value=<%=test[arr[0]] %>;
      document.getElementById("txt1").value=<%=test[arr[1]] %>;
      document.getElementById("txt2").value=<%=test[arr[2]] %>;
}
会把随机数显示在文本框里,现在的问题是0530会转换成344,0575转换成381,是八进制转换成10进制的缘故,怎么才能不转换呢 --------------------编程问答-------------------- 思想固化啊···
random是可以得到特定区间的整数随机数的吧?
这个不用说了
得到了整数的随机数还拿不到对应数组的随机数吗···
--------------------编程问答-------------------- 数组下标是数字,数字可以random随机,数据内容和下标绑定,这么说应该有思路了吧 --------------------编程问答--------------------
引用 14 楼 lk_lxn 的回复:
引用 12 楼 jxj807158342 的回复:引用 10 楼 lk_lxn 的回复:引用 6 楼 jxj807158342 的回复:不重复随机数
Java code?1234567891011121314151617181920212223242526272829303132import java.util.Arrays;import java.util.Scann……

我发现你学的比我多,哈哈,javaScript 我不会 --------------------编程问答--------------------
引用 13 楼 nmyangym 的回复:
可以利用Collections类的shuffle方法。
Java code?12345678910111213141516171819202122import java.util.*;public class RandomNumber{    public static final int NUM=3;        // 随机取3个.    public static……

我还没学到那呢 --------------------编程问答--------------------
引用 18 楼 jxj807158342 的回复:
引用 13 楼 nmyangym 的回复:可以利用Collections类的shuffle方法。
Java code?12345678910111213141516171819202122import java.util.*;public class RandomNumber{    public static final int NUM=3;        // 随机……
哦  好吧
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,