как генерировать случайные числа от 1 до 4 и 8 в быстрой - PullRequest
0 голосов
/ 01 июля 2018

Я делаю игру для iOS SpriteKit прямо сейчас, впервые разрабатываю любое приложение, и это сложная задача для меня, потому что это действительно большой проект в первый раз. Моя игра - игра в кости, и я определил ход как 4 числа. Поэтому, когда я когда-либо касаюсь экрана, игрок перемещает 4 блока, но теперь я хочу добавить кости в игру, и мне нужны числа от 1 до 4 и 8. Таким образом, это будет 1,2,3,4 и 8 чисел в кости , Я знаю, что в Swift мы можем получить случайные числа с помощью «arc4random», но как мне получить числа от 1 до 4, а также 8, могу ли я сделать это с помощью arc4random, и, если возможно, мне нужно, чтобы 4 и 8 чисел приходили на 20% чаще. Любая помощь будет действительно полезна. Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Поместите ваш sides в массив и используйте arc4random_uniform для выполнения броска:

let sides = [1, 2, 3, 4, 8]
let roll = sides[Int(arc4random_uniform(UInt32(sides.count)))]

если возможно, мне нужно 4 и 8 номеров, чтобы они приходили на 20% чаще

Это означает, что 4 и 8 должны появляться 6 раз при каждом появлении других 5. Поэтому поместите 5 каждого из 1 - 3 в ваш массив и 6 каждого из 4 и 8:

let sides = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8]
let roll = sides[Int(arc4random_uniform(UInt32(sides.count)))]

Кроме того, проверьте Функция MartinR's randomNumber(probabilities:) .

Вы бы использовали его функцию так:

let sides = [1, 2, 3, 4, 8]
let probabilities = [1.0, 1.0, 1.0, 1.2, 1.2]

let rand = randomNumber(probabilities: probabilities)
let roll = sides[rand]
0 голосов
/ 01 июля 2018

Вы можете сгенерировать случайное число от 1 до 8, а если придет 5,6,7, вы можете снова запустить функцию случайного числа до приемлемого значения. Это своего рода обходной путь, но он работает, потому что набор данных мал.

...