C# 랜덤 부울

Harshit Jindal 2023년10월12일
  1. C# 클래스 Random에서 Next() 메서드 사용
  2. C# 클래스 Random에서 NextDouble() 메서드 사용
C# 랜덤 부울

프로그래밍 방식으로 동전을 던져야 하는 상황이 발생했습니까? 두 데이터베이스 간에 무작위로 물건을 배포하고 싶었던 적이 있습니까?

당신이 달성하려고 하는 것은 우리가 random boolean이라고 부르는 것입니다. boolean 변수에는 true 또는 false의 두 가지 가능한 값만 있습니다.

이 부울을 무작위로 생성할 때 무작위 부울을 얻습니다. 이 자습서에서는 C#을 사용하여 random boolean을 만드는 방법을 보여줍니다.

우리는 또한 그것을 생성하는 가장 빠르고 이상적인 방법을 보게 될 것입니다.

C# 클래스 Random에서 Next() 메서드 사용

C#의 Random 클래스는 무작위성을 제공합니다. 통계적 요구 사항을 기반으로 무작위 시퀀스를 생성할 수 있는 의사 난수 생성기를 제공합니다.

클래스는 명시적으로 bytes, integersdoubles에 대해 제공하는 것처럼 부울에 대한 메서드를 제공하지 않습니다. 그러나 프로그래머의 관점에서 falsetrue01에 불과하기 때문에 이를 효율적으로 생성하여 사용할 수 있습니다.

첫 번째 방법은 Next() 메서드를 사용하여 n2로 할당하고 01만 구성하도록 용량을 줄임으로써 [0,n) 범위의 임의의 정수를 생성하는 것입니다. .

// Generate n random booleans using C# class Random
using System;

public class RandomBoolean {
  public static void Main() {
    int n = 5;
    var random = new Random();
    for (int i = 0; i < n; i++) {
      Console.WriteLine(random.Next(2) == 1);
    }
  }
}

출력:

False
True
True
False
False
// Note this is random and may not match with your actual output

C# 클래스 Random에서 NextDouble() 메서드 사용

이전 예제에서 Next()를 사용하여 임의의 부울을 생성하는 방법을 보았습니다. 이 접근 방식에서 우리는 같은 클래스 Random에서 또 다른 메서드 NextDouble()을 사용하는 방법을 볼 것입니다.

NextDouble()0.01.0 사이의 임의의 double 값을 반환합니다. 따라서 이 두 숫자 사이에 구분 기호를 추가하고 분리 조건에 따라 생성된 숫자를 true 또는 false로 나눌 수 있습니다.

예를 들어, 이중 값 0.3을 구분 기호로 선택하고 분리 조건을 생성된 수 >= 0.3으로 선택합니다. 따라서 숫자가 조건을 충족하면 true가, 그렇지 않으면 false가 됩니다.

충분히 무작위 분포를 달성하기 위해 분리기의 기본 값은 0.5입니다.

// Generate n random booleans using C# class Random
using System;

public class RandomBoolean {
  public static void Main() {
    int n = 5;
    var random = new Random();
    for (int i = 0; i < n; i++) {
      Console.WriteLine(random.NextDouble() >= 0.5);
    }
  }
}

출력:

True
False
True
True
False
// Note this is random and may not match with your actual output

게시물에 설명된 두 가지 방법 모두 상당히 빠릅니다.

그러나 가장 빠른 것을 선택해야 한다고 가정해 봅시다. 이 경우 두 번째 방법이 더 짧아 보입니다.

Next() 메소드는 NextDouble()에 의한 this.Sample()과 비교하여 내부적으로 (int)(this.Sample()*maxValue)를 반환하므로 곱셈 및 캐스팅의 추가 오버헤드가 발생합니다.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

관련 문장 - Csharp Random

관련 문장 - Csharp Boolean