>백엔드 개발 >PHP 튜토리얼 >10개의 숫자 무작위 분포 알고리즘

10개의 숫자 무작위 분포 알고리즘

WBOY
WBOY원래의
2016-09-21 14:13:132261검색

10개의 숫자를 10개의 위치로 무작위로 나누어서 이런 무작위 알고리즘을 작성하는 방법입니다.
내 생각: 난수를 생성한 다음 모듈로 10 + 난수로 10개의 위치를 ​​취하지만 충분히 무작위적인 느낌이 들지 않습니다. 좋은 알고리즘이 있습니까?
예:
1 2 3 4 5 6 7 8 9 10
2 1 4 3 9 7 8 6 5 10
. . .
(무작위로 배열)

보충:
방법 제공:
10개 숫자의 선형 테이블, 무작위(10)=5, 노드 5 삭제
9개 숫자의 선형 테이블, 무작위(9)=2, 노드 2 삭제
. . . .
마지막 무작위 시퀀스 5,2. . . . .
아주 무작위로 느껴집니다.

답글 내용:

10개의 숫자를 10개의 위치로 무작위로 나누어서 이런 무작위 알고리즘을 작성하는 방법입니다.
내 생각: 난수를 생성한 다음 모듈로 10 + 난수로 10개의 위치를 ​​취하지만 충분히 무작위적인 느낌이 들지 않습니다. 좋은 알고리즘이 있습니까?
예:
1 2 3 4 5 6 7 8 9 10
2 1 4 3 9 7 8 6 5 10
. . .
(무작위 배열)

보충:
방법 제공:
10개 숫자의 선형 테이블, 무작위(10)=5, 노드 5 삭제
9개 숫자의 선형 테이블, 무작위(9)=2, 노드 2 삭제
. . . .
마지막 무작위 시퀀스 5,2. . . . .
아주 무작위로 느껴집니다.

의사 코드:

<code>生成长度为10的数组a,压入1~10(或其他你想要的数)
for (i = a.length - 1; i > 0; i--) {
    生成一个0~i的随机数j(0 <= j < i)
    交换a[i]和a[j]
}</code>

컴퓨터가 진정한 난수를 생성할 수 있는 방법은 없습니다... 생성된 숫자를 다양한 간격으로 균등하게 분포시키려고 노력할 뿐입니다..

랜덤 알고리즘의 문제는 아닙니다. 샘플이 너무 작아서 100개의 무작위 숫자를 시도하면 매우 무작위로 보입니다.

랜덤으로 1, 3, 2, 4, 5, 6, 7, 8, 10, 9가 나오지만 아직도 랜덤이 아니라고 생각하시죠

10개의 숫자(1~10)를 10개의 위치로 해시하려고 합니다. 그냥 해시하세요.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.