[英]How to use random number from server to randomly display image from an array of images on client JAVA SOCKET PROGRAMMING
[英]java random number that is randomly 0 or 1
我试图获取一个零或一的随机数,但是我的代码总是返回一个:
它必须是可复制的,所以将来我需要时,我应该能够设置种子并获得相同的0或1。
// value after setting seed
System.out.println("Object after seed 0: " + RandomNumberGenerator(20, 0, 1) );
System.out.println("Object after seed 1: " + RandomNumberGenerator(10, 0, 1) );
System.out.println("Object after seed 2: " + RandomNumberGenerator(22, 0, 1) );
System.out.println("Object after seed 3: " + RandomNumberGenerator(93, 0, 1) );
System.out.println("Object after seed 4: " + RandomNumberGenerator(04, 0, 1) );
}
public static int RandomNumberGenerator(int seed, int min, int max)
{
// create random object
Random randomno = new Random();
// setting seed
randomno.setSeed( seed );
return randomno.nextInt((max - min) + 1) + min;
}
我不明白那里出了什么问题。
创建一个Random
实例,并调用其nextDouble
方法。 它返回0.0到1.0之间的值。
public static int randomBit(long seed){
Random r = new Random(seed);
return r.nextDouble() >= 0.5? 1 : 0;
}
另外,如果您不熟悉问号符号,则将其称为三元运算符。 它本质上是一个压缩的if-else
语句。
这是因为您使用了seed
。
如果您使用以下方法测试代码:
for (int i=1; i<10000; i++){
if (RandomNumberGenerator(i, 0, 1)==0){
System.out.println(i);
}
}
你会看到, 0
是在范围仅返回种子4096
- 8703
。
可能通过对您的问题的进一步调查来揭示答案。 您已经选择了五个隔离的测试用例。 这是一个更大的搜索:
public static void main(String[] args) {
for (int i = 0; i < 10000; i++)
System.out.println("Seed " + i + ": " + RandomNumberGenerator(i, 0, 1));
}
从中我们发现,直到4095输出1的种子,然后开始出现0。
我鼓励您将来进行类似的扩展测试。
您正在java.util.Random上使用nextInt。 0到1之间没有整数。也请保持种子随机,否则每次运行都会得到相同的结果。
假设您尝试获取某个范围(最小,最大)内的随机数,您的代码可以正常工作。
public class Main {
public static void main(String[] args) {
System.out.println("Started");
System.out.println("Object after seed 0: " + RandomNumberGenerator(20, 0, 10) );
System.out.println("Object after seed 1: " + RandomNumberGenerator(10, 0, 10) );
System.out.println("Object after seed 2: " + RandomNumberGenerator(22, 0, 10) );
System.out.println("Object after seed 3: " + RandomNumberGenerator(93, 0, 10) );
System.out.println("Object after seed 4: " + RandomNumberGenerator(04, 0, 10) );
}
public static int RandomNumberGenerator(int seed, int min, int max) {
// create random object
Random randomno = new Random();
// setting seed
/*randomno.setSeed(seed);*/
return randomno.nextInt((max - min) + 1) + min;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.