#c# #algorithm #unity3d
#c# #алгоритм #unity3d
Вопрос:
В настоящее время я разрабатываю игру с использованием C # и Unity3d для моего школьного проекта
Я пытаюсь выяснить, как генерировать случайные числа на основе определенного числа. Моя игра работает следующим образом, например, вам было присвоено базовое число «6», мне нужно несколько советов о том, как сгенерировать возможную комбинацию чисел на основе числа «6», используя сложение, например, оно будет генерировать числа 2 2 2 = 6
или 1 1 4 = 6
или 3 3 = 6
и так далее
В настоящее время я использую этот код для генерации случайного числа, но я понятия не имею, как заставить его генерировать случайное число на основе начального числа
randNumber = Mathf.RoundToInt(Random.Range(0.0f,8.0f));
нужна помощь thx заранее, извините, просто новичок
Комментарии:
1. Не могли бы вы пояснить, о чем вы спрашиваете? Вы спрашиваете о способе генерации случайных сумм, которые в сумме составляют определенное число, или вы спрашиваете, как заполнить генератор случайных чисел?
2. @simeon pilgrim, если быть точным, мне нужно сгенерировать возможную комбинацию случайных чисел, например, на основе базового числа (процесс сложения). В моей игре уровень 1. базовое число равно «5» (мне нужно сгенерировать возможные случайные числа, которые при суммировании дадут значение 5) (2 3=5) (1 2 2=5) (1 1 1 2=5) итак что, кстати, спасибо за ответ!! извините, если это очень запутанно
3. но если ваше целевое число является int и находится в диапазоне от 0 до 8, то это фиксированное количество значений, которые суммируются для каждой цели. Никаких случайных чисел. Итак, ваша «проблема» связана с unity и случайным числом, если не удалить этот материал, ваша «проблема» заключается в поиске чисел, сумма которых равна X, если не удалить это. И по «проблеме», с чем вам нужна помощь, вся моя домашняя работа не является правильным ответом.
Ответ №1:
Случайным образом выберите число от 1 до числа, добавьте его в список, а затем вычтите полученное число. Повторяйте, пока число не достигнет 0. Вот пример:
static Random rand = new Random();
private static List<int> GetRandomNums(int number)
{
List<int> list = new List<int>();
while (number != 0)
{
int addend = rand.Next(1, number 1);
list.Add(addend);
number -= addend;
}
return list;
}
Ответ №2:
Ниже приведен псевдокод :-
randlist = []
int target = 5;
while(target > 0) {
int rand = Random(1,target);
target = target-rand;
randlist.add(rand);
}
print randlist
Примечание: — Random(1,target)
генерирует случайное число между (1, цель) оба включительно.