>  Q&A  >  본문

php - 확률적 알고리즘 정렬

각 확률 간격에 결과가 있도록 확률에 따라 데이터를 정렬하는 방법은 무엇입니까?

예를 들어 다음과 같은 데이터 세트가 있다고 가정해보세요

으아아아

Key는 정렬할 값이고 value는 각 값이 배열의 해당 위치에 나타날 확률입니다. 예를 들어 a는 계산된 배열에서 위치 0에 나타날 확률이 40%입니다. , a가 먼저 배열에 표시될 확률은 40%이고 나머지는 확률에 따라 알고리즘적으로 정렬됩니다.

현재 솔루션(Low의 방법이며 배열이 확장됨에 따라 계속 지원될 수 없음):
1. a의 간격이 0~40이고 b의 간격이 다음과 같다고 가정하고 기존 확률에 따라 간격을 나눕니다. 40-60, c는 60-70 등
2. 함수를 사용하여 1-100 범위의 난수를 얻은 후 결과를 던집니다(즉, 해당 간격에 넣습니다)

코드는 다음과 같습니다(최적화 아이디어를 구합니다)

으아아아

발생한 문제: (in_array 판단은 이러한 간격의 값을 한 번만 계산할 수 있기 때문입니다.)
1. 계산된 값이 반드시 각 간격의 값을 가질 필요는 없습니다.
2 코드는 확장 가능하지 않습니다.

저에게도 조언과 조언을 해주시기를 바랍니다. 모두 감사합니다!

过去多啦不再A梦过去多啦不再A梦2722일 전734

모든 응답(2)나는 대답할 것이다

  • 黄舟

    黄舟2017-05-24 11:35:58

    이 질문에는 문제가 있다고 생각합니다. 그러한 입력은 조건을 만족하는 분포가 존재한다는 것을 보장하지도 않습니다.

    함께{a: 60, b: 40} 为例:全排列的空间是{ab, ba}. 그렇다면 정의에 따르면 다음과 같아야 합니다.

    으아악

    회신하다
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-24 11:35:58

    내가 쓴 것과 똑같다 == 나도 확장하는 방법을 알고 싶다

    회신하다
    0
  • 취소회신하다