我需要几行Java代码,这些代码在x%的时间内随机运行命令。
伪码:
boolean x = true 10% of cases.
if(x){
System.out.println("you got lucky");
}
答案 0 :(得分:27)
你只需要这样的东西:
Random rand = new Random();
if (rand.nextInt(10) == 0) {
System.out.println("you got lucky");
}
以下是衡量它的完整示例:
import java.util.Random;
public class Rand10 {
public static void main(String[] args) {
Random rand = new Random();
int lucky = 0;
for (int i = 0; i < 1000000; i++) {
if (rand.nextInt(10) == 0) {
lucky++;
}
}
System.out.println(lucky); // you'll get a number close to 100000
}
}
如果你想要34%的东西,你可以使用rand.nextInt(100) < 34
。
答案 1 :(得分:19)
如果通过时间表示代码正在执行次,那么您需要在代码块内部执行10%的次数整个块被执行你可以做类似的事情:
Random r = new Random();
...
void yourFunction()
{
float chance = r.nextFloat();
if (chance <= 0.10f)
doSomethingLucky();
}
当然0.10f
代表10%,但你可以调整它。像每个PRNG算法一样,这通过平均使用来工作。除非yourFunction()
被称为合理的次数,否则你不会接近10%。
答案 2 :(得分:3)
要将您的代码作为基础,您可以这样做:
if(Math.random() < 0.1){
System.out.println("you got lucky");
}
仅供参考Math.random()
使用Random
答案 3 :(得分:2)
您可以使用Random。您可能想要播种它,但默认值通常就足够了。
Random random = new Random();
int nextInt = random.nextInt(10);
if (nextInt == 0) {
// happens 10% of the time...
}
答案 4 :(得分:1)
你可以试试这个:
public class MakeItXPercentOfTimes{
public boolean returnBoolean(int x){
if((int)(Math.random()*101) <= x){
return true; //Returns true x percent of times.
}
}
public static void main(String[]pps){
boolean x = returnBoolean(10); //Ten percent of times returns true.
if(x){
System.out.println("You got lucky");
}
}
}
答案 5 :(得分:0)
你必须首先定义“时间”,因为10%是一个相对量度......
E.g。 x每5秒为真。
或者您可以使用随机数生成器,从1到10均匀采样,如果他采样“1”,则总是做一些事情。
答案 6 :(得分:0)
您总是可以生成一个随机数(默认情况下,我认为它介于0和1之间),并检查它是否为&lt; = .1,再次这不是均匀的随机数....
答案 7 :(得分:0)
public static boolean getRandPercent(int percent) {
Random rand = new Random();
return rand.nextInt(100) <= percent;
}