package arrays;
import java.util.Scanner;
public class Raffle {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("Enter the number of partcipants ");
int no=scan.nextInt();
String participants[]=new String[no];
System.out.println("Please enter their names and check out the random winner");
for(int i=0;i<no;i++) {
participants[i]=scan.next();
}
int rand=(int)Math.random()*no;
System.out.println(rand);
System.out.println("The winner of the raffle is "+participants[rand]);
}
}
我使用Math.random()
但我在运行期间看到0索引位置总是给出结果而不是随机值。有什么建议?我正在吸氧。
答案 0 :(得分:7)
您将Math.random()
的结果投放到int
之前将其乘以no
,结果为0
,因为Math.random() < 1.0
。
更改
int rand=(int)Math.random()*no;
到
int rand=(int)(Math.random()*no);
答案 1 :(得分:1)
在0.0(包括)和1.0(不包括)之间投射双精度将始终向下舍入为零。 Math.random()值应首先与某个因子相乘,然后再将其转换为int,以获得介于零(包括)和乘法因子(不包括)之间的值。另一种可能的解决方案是使用java.util.Random。
的nextInt()方法