2014-07-20 3 views
3

무작위 추출 프로그램의 경우 QBasic에서 "NUM"값으로 0에서 10까지 또는 0에서 100까지 완전히 난수가 필요합니다. 나는 현재이 있습니다QBasic에서 0에서 100까지 임의의 숫자

RANDOMIZE TIMER: A = INT((RND * 100)): B = INT((RND * 10)): C = (A + B) 
NUM = INT(C - (RND * 10)) 

이 100

내가 꽤 너무 자주 동일하거나 매우 유사한 번호를 얻을하는 문제 1에서 임의의 숫자를 얻기 위해 기본적으로 임의 수학 연산의 단지 더미입니다 . 더 신뢰할 수있는 방법이 있나요?

+2

을 QBasic - 오래된 학교! –

+4

QBasic의 의사 난수 생성기는 매우 낮은 품질이며 특정 출력에 편향된 것으로 보입니다 (1990 년 제 경험에 기반). 나는 그것이 단지 16 비트의 상태를 가지고 있다고 생각한다. QBasic에서 더 높은 품질의 PRNG가 필요하면 직접 작성해야 할 수도 있습니다. – user3553031

+0

이것은 무작위 적입니다. – Gala

답변

2

Rand function

NUM = Rand(0, 100) 
+1

약간의 요점은 QBasic의 네이티브'RND'를 사용한다는 것입니다. 여기서 Mersenne Twister (또는 실제로는 * anything *)를 보길 원합니다. 하지만 +1 : "더 많은 임의성"에 대한 RND를 혼란스럽게 만들었습니다. 미소를 짓게했습니다. – usr2564301

+2

@Jongware http://stackoverflow.com/questions/에 나열된 알고리즘 중 일부를 시도하고 싶었습니다. 6275593/how-to-write-own-random-number-algorithm (특히 XORShift) 및 http://en.wikipedia.org/wiki/List_of_pseudorandom_number_generators를 참조하십시오. 그것의 QBASIC 구현은 재미있는 (매끈한?) 도전이어야합니다. – bugmagnet

2

전혀 "100 0에서 10 또는 0에서 임의의 숫자"a의 요구 사항을 충족하지 않습니다 제공하는 코드를 사용하십시오. A을 0에서 99 사이의 임의의 숫자로 설정하고 B에서 0에서 9까지의 임의의 숫자로 설정하기 시작합니다. 그러나 나머지 계산은 "OR"를 수행하지 않습니다.

이 방법에 대해 :

RANDOMIZE TIMER 
A = INT(RND * 101)  // random number from 0 to 100 
B = INT(RND * 11)  // random number from 0 to 10 
C = INT(RND * 2)  // random number from 0 to 1 
IF C = 0 THEN 
    NUM = A 
ELSE 
    NUM = B 
END IF 

이상의 단순화 : 숫자 0에서 임의의 숫자를 얻기 위해

RANDOMIZE TIMER 
NUM = INT(RND * 101) 
IF INT(RND * 2) = 0 THEN 
    NUM = INT(RND * 11) 
END IF 
1

, 당신은 다음과 같은 프로그램을 사용할 수 있습니다 -

Randomize timer 

Rand_num = INT(RND(1)*limit)+1 

Where- 

Rand_num= the random number 

Limit = the last number like if you want from 0 to 100 then limit will be 100