나는 임의의 숫자를 얻으려고 노력하고 있지만 줄일 수없는 일정한 양의 숫자가 있습니다. 이 보안 방법으로 실제로 2 자리 난수 만 얻을 수있는 방법은 무엇입니까?
{ Console.WriteLine("{0}",GetRandom());Console.ReadLine();
}
private static int GetRandom()
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
{
byte[] randomNumber = new byte[4];
rng.GetBytes(randomNumber);
int value = BitConverter.ToInt32(randomNumber,0);
return value;
모듈로 연산자로 알려진 %를 사용하십시오 . 비정상적으로 PRNG 범위를 생성 RNGCryptoServiceProvider
하지만 바이어스가 더 작습니다 System.Random
.
코드는 다음과 같아야합니다.
private static int GetRandom(int min, max) {
using(System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider())
{
byte[] randomNumber = new byte[4];
rng.GetBytes(randomNumber);
int value = BitConverter.ToInt32(randomNumber,0);
return Math.Abs(value%max+min);
}
}
나는 사용 Math.Abs
했기 때문에 양수 만 얻을 수 있지만 제거 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다