>  기사  >  백엔드 개발  >  Go를 사용하여 슬라이스의 한쪽 끝으로 편향된 슬라이스에서 항목을 무작위로 선택하는 방법은 무엇입니까?

Go를 사용하여 슬라이스의 한쪽 끝으로 편향된 슬라이스에서 항목을 무작위로 선택하는 방법은 무엇입니까?

王林
王林앞으로
2024-02-05 23:12:121006검색

如何使用 Go 从切片中随机选择一个偏向切片一端的项目?

질문 내용

다음에서 임의의 값을 선택하는 방법을 이해합니다. go 中的 slice:

으아악

하지만 slice 中选择一个随机项目,并偏向 slice 的一端?对于我的用例,我将拥有一个 slice,它使用 append() 随着时间的推移而增长。我的理解是,最新的项目将添加到 slice 的右侧。我想创建一个函数,从 slice 中选择一个随机项目,并偏向 slice 的最新成员。我的第一个猜测是通过 rand.normfloat64() 使用 正态分布 에서 이것을 어떻게 얻을 수 있나요? 하지만 이것을 달성하기 위해 어떻게 사용할 수 있는지 또는 사용할 수 있는지 잘 모르겠습니다.

이 기능은 slice 中选取任何项目,但应该以更高的频率选取添加到 slice에서 새 항목을 로드할 수 있어야 합니다.


정답


정규 분포에 만족한다고 가정하면 rand.normfloat64()를 사용할 수 있습니다. 배열에 항목이 20개 있는 경우:

으아악

목록의 시작 부분에 가중치가 부여된 숫자를 생성합니다. 그리고

으아악

목록 끝 부분에 가중치가 부여된 숫자를 생성합니다.

샘플의 무작위 분포를 보여주는 예입니다. 모바일 놀이터: https://www.php.cn/link/34ff028fc02b773b8885b59aee142e60

으아악

샘플 출력:

[86 92 76 80 73 69 60 69 58 51 47 38 44 30 29 24 19 27 18 10]

랜덤하기 때문에 꼬리 아이템은 모두 얻을 수 있어요...

전반부의 숫자가 왼쪽 절반의 숫자의 10배인 단계 함수를 원할 경우 임의의 숫자 두 개를 사용하면 됩니다.

으아악

go 놀이터 예시: https://www.php.cn/link/d5c82d99f0edb85fc94ffa4204146aad

으아악

예제 출력

[96 92 89 89 88 78 95 86 83 98 15 10 15 10 10 12 4 11 11 8]

위 내용은 Go를 사용하여 슬라이스의 한쪽 끝으로 편향된 슬라이스에서 항목을 무작위로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제