Вы можете использовать String.Replace (), чтобы заменить нужную строку разделения символом, который не встречается в строке, а затем использовать String.Split для этого символа, чтобы разделить результирующую строку на тот же эффект.
Для эффективного случайного числа, скашиваемого последовательно к одному концу масштаба:
, например, в (непротестированном) PHP:
function weightedrand($min, $max, $gamma) {
$offset= $max-$min+1;
return floor($min+pow(lcg_value(), $gamma)*$offset);
}
echo(weightedrand(1, 10, 1.5));
Существует довольно хорошее учебное руководство для Вас .
В основном:
Наивный взлом для этого должен был бы создать список или массив как
1, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10
И затем выбрать случайным образом из этого.
Это руководство проведет вас через это, в PHP с несколькими решениями для вырезания и вставки. Обратите внимание, что эта процедура немного изменена по сравнению с тем, что вы найдете на этой странице, в результате комментария ниже.
Функция взята из поста:
/**
* weighted_random_simple()
* Pick a random item based on weights.
*
* @param array $values Array of elements to choose from
* @param array $weights An array of weights. Weight must be a positive number.
* @return mixed Selected element.
*/
function weighted_random_simple($values, $weights){
$count = count($values);
$i = 0;
$n = 0;
$num = mt_rand(1, array_sum($weights));
while($i < $count){
$n += $weights[$i];
if($n >= $num){
break;
}
$i++;
}
return $values[$i];
}