Мне нужно несколько строк кода Java, которые запускают команду х% времени в случайном порядке.
psuedocode:
boolean x = true 10% of cases.
if(x){
System.out.println("you got lucky");
}
Мне нужно несколько строк кода Java, которые запускают команду х% времени в случайном порядке.
psuedocode:
boolean x = true 10% of cases.
if(x){
System.out.println("you got lucky");
}
Если по времени вы имеете в виду времена, когда код выполняется, так что вы хотите что-то внутри блока кода, которое выполняется в 10% случаев, когда весь блок выполняется, вы можете просто сделать что-то вроде:
Random r = new Random();
...
void yourFunction()
{
float chance = r.nextFloat();
if (chance <= 0.10f)
doSomethingLucky();
}
Конечно, 0.10f
означает 10%, но вы можете его отрегулировать. Как и каждый алгоритм PRNG, это работает при среднем использовании. Вы не достигнете 10%, если yourFunction()
не будет называться разумным количеством раз.
Вам просто нужно что-то вроде этого:
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
.
Чтобы взять ваш код в качестве базы, вы можете просто сделать это следующим образом:
if(Math.random() < 0.1){
System.out.println("you got lucky");
}
FYI Math.random()
использует статический экземпляр Random
Вы можете использовать Random. Вы можете захотеть засеять его, но по умолчанию часто бывает достаточно.
Random random = new Random();
int nextInt = random.nextInt(10);
if (nextInt == 0) {
// happens 10% of the time...
}
Вы можете попробовать следующее:
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");
}
}
}
Сначала вы должны определить "время", так как 10% является относительной мерой...
например. x истинно каждые 5 секунд.
Или вы можете использовать генератор случайных чисел, который сэмплирует равномерно от 1 до 10 и всегда что-то делать, если он выберет "1".
Вы всегда можете сгенерировать случайное число (по умолчанию оно находится в пределах от 0 до 1, я считаю) и проверить, равно ли оно < =.1, это не является случайным случайным образом....
public static boolean getRandPercent(int percent) {
Random rand = new Random();
return rand.nextInt(100) <= percent;
}