True 또는 False를 무작위로 반환
반환 하거나 임의로 Java 메서드 를 만들어야합니다 . 어떻게 할 수 있습니까?true
false
클래스 java.util.Random
에는 이미 다음 기능이 있습니다.
public boolean getRandomBoolean() {
Random random = new Random();
return random.nextBoolean();
}
그러나 Random
임의의 부울이 필요할 때마다 항상 새 인스턴스를 만드는 것은 효율적이지 않습니다 . 대신 Random
임의의 부울이 필요한 클래스 유형의 속성을 만든 다음 각각의 새로운 임의의 부울에 해당 인스턴스를 사용합니다.
public class YourClass {
/* Oher stuff here */
private Random random;
public YourClass() {
// ...
random = new Random();
}
public boolean getRandomBoolean() {
return random.nextBoolean();
}
/* More stuff here */
}
(Math.random() < 0.5)
무작위로 true 또는 false를 반환합니다.
이렇게해야합니다.
public boolean randomBoolean(){
return Math.random() < 0.5;
}
다음 코드로 할 수 있습니다.
public class RandomBoolean {
Random random = new Random();
public boolean getBoolean() {
return random.nextBoolean();
}
public static void main(String[] args) {
RandomBoolean randomBoolean = new RandomBoolean();
for (int i = 0; i < 10; i++) {
System.out.println(randomBoolean.getBoolean());
}
}
}
도움이 되었기를 바랍니다. 감사합니다.
다음과 같이 얻을 수 있습니다.
return Math.random() < 0.5;
편향되지 않은 결과를 위해 다음을 사용할 수 있습니다.
Random random = new Random();
//For 50% chance of true
boolean chance50oftrue = (random.nextInt(2) == 0) ? true : false;
참고 : random.nextInt (2)는 숫자 2가 경계임을 의미합니다. 계산은 0에서 시작합니다. 따라서 2 개의 가능한 숫자 (0과 1)가 있으므로 확률은 50 %입니다!
결과가 참 (또는 거짓) 일 확률을 높이고 싶다면 위를 다음과 같이 조정할 수 있습니다!
Random random = new Random();
//For 50% chance of true
boolean chance50oftrue = (random.nextInt(2) == 0) ? true : false;
//For 25% chance of true
boolean chance25oftrue = (random.nextInt(4) == 0) ? true : false;
//For 40% chance of true
boolean chance40oftrue = (random.nextInt(5) < 2) ? true : false;
Java의 Random
클래스는 CPU의 내부 시계를 사용합니다 (내가 아는 한). 마찬가지로 RAM 정보를 임의의 소스로 사용할 수 있습니다. Windows 작업 관리자, 성능 탭을 열고 실제 메모리-사용 가능 : 지속적으로 변경됩니다. 대부분의 경우 값은 약 1 초마다 업데이트되지만 드문 경우에만 값이 몇 초 동안 일정하게 유지됩니다. 더 자주 변경되는 다른 값은 System Handles 및 Threads 이지만 cmd
값을 가져 오는 명령을 찾지 못했습니다 . 따라서이 예에서는 사용 가능한 실제 메모리 를 임의의 소스로 사용합니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public String getAvailablePhysicalMemoryAsString() throws IOException
{
Process p = Runtime.getRuntime().exec("cmd /C systeminfo | find \"Available Physical Memory\"");
BufferedReader in =
new BufferedReader(new InputStreamReader(p.getInputStream()));
return in.readLine();
}
public int getAvailablePhysicalMemoryValue() throws IOException
{
String text = getAvailablePhysicalMemoryAsString();
int begin = text.indexOf(":")+1;
int end = text.lastIndexOf("MB");
String value = text.substring(begin, end).trim();
int intValue = Integer.parseInt(value);
System.out.println("available physical memory in MB = "+intValue);
return intValue;
}
public boolean getRandomBoolean() throws IOException
{
int randomInt = getAvailablePhysicalMemoryValue();
return (randomInt%2==1);
}
public static void main(String args[]) throws IOException
{
Main m = new Main();
while(true)
{
System.out.println(m.getRandomBoolean());
}
}
}
As you can see, the core part is running the cmd systeminfo
command, with Runtime.getRuntime().exec()
.
For the sake of brevity, I have omitted try-catch statements. I ran this program several times and no error occured - there is always an 'Available Physical Memory' line in the output of the cmd command.
Possible drawbacks:
- There is some delay in executing this program. Please notice that in the
main()
function , inside thewhile(true)
loop, there is noThread.sleep()
and still, output is printed to console only about once a second or so. - The available memory might be constant for a newly opened OS session - please verify. I have only a few programs running, and the value is changing about every second. I guess if you run this program in a Server environment, getting a different value for every call should not be a problem.
참고URL : https://stackoverflow.com/questions/8878015/return-true-or-false-randomly
'developer tip' 카테고리의 다른 글
HTML, 자바 스크립트 및 Ajax 요청으로 jQuery를 사용하여 Amazon s3에 이미지 업로드 (PHP 없음) (0) | 2020.11.30 |
---|---|
BigDecimal을 문자열로 (0) | 2020.11.30 |
wget 진행률 표시 줄 만 표시하는 방법은 무엇입니까? (0) | 2020.11.29 |
'AppModule'모듈에서 예기치 않은 값 'undefined'를 선언했습니다. (0) | 2020.11.29 |
UITextField의 자동 수정 비활성화 (0) | 2020.11.29 |