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));
}
}
不重复 被取出来的数据 再数组里删掉不就行了 --------------------编程问答-------------------- 哈哈,很多方法 --------------------编程问答--------------------
数组长度不是固定不变吗? --------------------编程问答-------------------- 大哥你看看吧,有重复的啊 --------------------编程问答--------------------
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");
} --------------------编程问答--------------------
不好意思写错了,重新发一下
import java.util.Arrays;--------------------编程问答-------------------- 可以利用Collections类的shuffle方法。
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));
}
}
--------------------编程问答-------------------- 哈哈 没事,谢谢你了,还有一个问题是想问你一下,我是这样写的
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);
}
}
}
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(){会把随机数显示在文本框里,现在的问题是0530会转换成344,0575转换成381,是八进制转换成10进制的缘故,怎么才能不转换呢 --------------------编程问答-------------------- 思想固化啊···
document.getElementById("txt0").value=<%=test[arr[0]] %>;
document.getElementById("txt1").value=<%=test[arr[1]] %>;
document.getElementById("txt2").value=<%=test[arr[2]] %>;
}
random是可以得到特定区间的整数随机数的吧?
这个不用说了
得到了整数的随机数还拿不到对应数组的随机数吗···
--------------------编程问答-------------------- 数组下标是数字,数字可以random随机,数据内容和下标绑定,这么说应该有思路了吧 --------------------编程问答--------------------
我发现你学的比我多,哈哈,javaScript 我不会 --------------------编程问答--------------------
我还没学到那呢 --------------------编程问答-------------------- 哦 好吧
补充:Java , Java SE