Добрый день. Я новичок в программировании. Столкнулся с проблемой.
Как можно задать определенный объём символов при использовании функции Рандом.
Вот пример кода в котором массив чисел заполняется в случайном порядке 0 или 1.
Хотелось бы сделать возможность задать параметры распределения. Как пример, чтобы 80% массива были 0. При этом чтобы остался случайным порядок заполнения
for (int i = 0; i < newArray.Length; i++)
{
newArray[i] = randomGen.Next(0, 2)
if (newArray[i] == 0)
{
newArray[i] = black;
}
else
{
newArray[i] = white;
}
}
Ответ
К сожалению, «из коробки» такого решения нет. Но можно легко смоделировать.
Например, если мы хотим вероятность нуля 80%:
var percent = randomGen.Next(0, 100); // от 0 до 99
if (percent < 80)
newArray[i] = black;
else
newArray[i] = white;
Для большего количества альтернатив, например, 60% чёрного, 30% красного, 6% зелёного и 4% белого:
var percent = randomGen.Next(0, 100); // от 0 до 99
if (percent < 60) // [0..60) => black
newArray[i] = black;
else if (percent < 60 + 30) // [60..90) => red
newArray[i] = red;
else if (percent < 60 + 30 + 6) // [90..96) => green
newArray[i] = green;
else // [96..100) => white
newArray[i] = white;
Ну и так далее.
Комментариев нет:
Отправить комментарий