읽고 싶지 않으면 "편향된 임의성"으로 스크롤하십시오.
mysql에서는 SeleCT * From table order by rand() limit 5
을 사용할 수 있습니다.
원하는 것은 작동하지 않습니다. 그것의 논리적으로 모순.
정의에 의한 완전한 무작위성은 무한한 기간 후에 동일한 분포를한다는 것을 이해해야합니다.
선택 간격이 길수록 분포가 균일합니다.
예를 들어 매 24 시간마다 선택 분포가 균일해야하는 경우 임의의 알고리즘을 사용할 수 없습니다. 정의 상으로는 모순적입니다.
정말 목표에 달려 있습니다.
예를 들어 임의의 요소를 무작위로 취한 다음 동일한 요소가 다음 실행에서 다시 선택 될 가능성을 낮출 수 있습니다. 이렇게하면보다 짧은 시간에보다 균등하게 배포 할 수있는 경험적 방법을 사용할 수 있습니다. 그러나 그것은 무작위가 아닙니다. 잘 특정 부분은 있습니다.
데이터베이스에서 무작위로 선택하고 선택한 요소를 표시 한 다음 아직 선택되지 않은 요소 만 선택하면됩니다. 요소가 남아 있지 않으면 모두 재설정하십시오.
매우 사소하지만 작업을 수행 할 수 있습니다.
타임 스탬프를 사용하여 배포를 좀 더 우아하게 만들 수도 있습니다.
이것은 아마도 ORDER BY RAND()*((timestamps-min(timestamps))/(max(timetamps)-min(timestamps))) DESC
또는 이와 비슷한 형태 일 수 있습니다. 기본적으로 시간 간격 창을 사용하여 항목을 선택하는 타임 스탬프를 정규화 할 수 있으므로 0과 1 사이의 값을 얻은 다음 rand로 곱합니다. 그런 다음 50 %의 새로운 항목을 덜 선택하고 50 %의 임의성을 가질 수 있습니다. 위의 공식에 대해 잘 모르겠다. 아마 틀렸지 만 원리가 작동합니다.
내가 원하는 것은 일반적으로 "편향된 임의성"이라고합니다. 저기에 많은 논문들이 있고 그래서 몇몇 기사들이 있습니다. 여기 예를 들어 :
Biased random in SQL?
는, 롤 정의에 의해 동일 할 것이다.걱정할 필요가 없다 –
독일의 상태가 헌법에 의해 파산 할 수 있다는 사실만큼 위안이된다. D –
그리고 물론 모두가 수학적 정확도로 대답하는 경향이있다. 반면에 웹 페이지는 과용이다. –