parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 27.10.2013 09:38 / 27.10.2013 09:53

вообще такой алгоритм найдёт только одну случайную позицию в диапазоне таблицы.
а дальше можно небольшим циклом получить нужное кол-во уникальных случайных строк:
^if($requested_count >= $table){
	$result[^table::create[$table]]
	^result.sort(^math:random(1))
}{
	$h[^hash::create[]]
	^while($h < $requested_count){
		$h.[^math:random($table)](true)
	}
	$result[^table::create[$table][$.limit(0)]]
	^h.foreach[offset;]{^result.join[$table][$.offset($offset)$.limit(1)]}
}
это будет эффективнее, чем "случайно" сортировать таблицу.