Go에서 짧은 배열의 출력 순서를 무작위로 지정하는 알고리즘

WBOY
풀어 주다: 2024-02-15 12:57:08
앞으로
786명이 탐색했습니다.

Go 中短数组的输出顺序随机化的算法

PHP 편집자 Xiaoxin이 Go 언어에서 짧은 배열의 출력 순서를 무작위로 지정하는 알고리즘에 대한 기사를 가져왔습니다. Go 언어에서는 짧은 배열의 출력 순서가 정의되지 않습니다. 이는 Go 언어의 동시성 특성 때문입니다. 이 기사에서는 짧은 배열의 출력 순서를 무작위화하여 프로그램이 실행될 때마다 출력 순서가 달라지도록 하는 난수 생성기 기반의 알고리즘을 소개하여 프로그램의 유연성과 가변성을 높입니다. 이 기사를 읽으면 독자는 Go 언어에서 짧은 배열의 출력 순서를 무작위로 지정하고 이를 자신의 프로젝트에 적용하는 방법을 배울 수 있습니다.

질문 내용

이 질문과 많은 중복 답변의 주요 차이점은 입력 배열이 요소가 3개로 매우 짧다는 것입니다. --

내가 int 세트를 주문했다고 가정해 보겠습니다. 배열의 크기는 3(또는 그 이상)입니다. 순서를 무작위로 지정하고 새 배열을 반환해야 합니다. 순수한 알고리즘 질문이지만 선호되는 답변 언어는 go입니다.

  • 파이썬을 사용하여 목록을 무작위 순서로 출력하는 방법은 무엇입니까? 대답은 random.shuffle 입니다.
  • go를 사용하여 https://yourbasic.org/golang/shuffle-slice-array/를 사용하면 대답은 rand.shuffle이어야 합니다.

하지만 내 코드는 다음과 같습니다.

https://go.dev/play/p/cvu8_q96-9f

으아악

이것은 내 테스트 실행 결과 중 하나입니다.

으아악

이건 그다지 무작위적인 것 같지는 않습니다.

짧은 3개 요소 배열에 대한 더 나은 무작위화를 위한 좋은 아이디어가 있습니까?

그런데,

  • vhdl을 사용하여 배열 요소를 무작위 순서로 출력하는 방법에는 선형 피드백 시프트 레지스터를 사용하라고 되어 있지만 이 문제에 대해서는 좋은 생각이 아닌 것 같습니다.
  • Javascript 배열을 무작위로 섞는 방법은 무엇입니까? Durstenfeld 셔플링 알고리즘을 고려하면 fisher-yates의 최적화된 버전이지만 그 결과는 go의 rand.shuffle와 매우 유사할 것이라고 생각합니다. 응?

해결 방법

셔플 기능에서 기본 기능으로 random.seed 이동하세요. Prng는 프로그램당 한 번만 시드될 수 있으며 시드가 아닌 생성기의 상태 전환을 통해 무작위성의 성공적인 모방이 달성됩니다. prng의 작동 방식을 실제로 이해하고 재현성과 같은 이유로 프로세스를 명시적으로 제어하려고 시도하지 않는 한 다시 시드하지 마십시오.

다음과 같이 코드를 간단하게 수정하면 요구 사항을 충족할 수 있습니다.

으아악

이 결과는 다음과 같습니다:

으아악

위 내용은 Go에서 짧은 배열의 출력 순서를 무작위로 지정하는 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿