поэтому моя цель в этом кодовом бите - случайным образом бросить два кубика, и, как мы все знаем, ваш обычный кубик имеет только 6 сторон, поэтому я импортировал Foundation для доступа к arc4random_uniform (UInt32). Я попытался использовать диапазон (1..7), чтобы избежать случайного получения 0, однако это вернуло ошибку, которая мне не очень понравилась. Я пробовал это сделать:
dice1 = arc4random_uniform(UInt32(1..7))
однако это вернулось
Не удалось найти перегрузку для init, которая принимает предоставленные аргументы
Я надеюсь, что этой информации достаточно, чтобы вы, потрясающие дебюты, могли мне помочь :)
Обратите внимание, я просто делаю это на детской площадке, чтобы попрактиковаться в быстроте. Не обязательно, чтобы я научился это делать; я просто возился перед тем, как приступить к созданию реальных приложений: D
//imports random number function
import Foundation
//creates data storage for dice roll
var dice1: UInt32 = 0
var dice2: UInt32 = 0
//counter variable
var i = 0
//how many times snake eyes happens
var snakeeyes = 0
//how many times a double is rolled
var `double` = 0
//rolls dice 100 times
while i < 100{
//from here
//sets dice roll
Это возвращает ошибку "Range $ T3" не конвертируется в UInt32.
dice1 = arc4random_uniform(1..7) dice2 = arc4random_uniform(1..7)
//checks for snake eyes
if dice1 == 1 && dice2 == 1 {
snakeeyes = snakeeyes + 1
}
//checks for doubles
if dice1 == dice2{
`double` = `double` + 1
}
//increases counter
i = i + 1
//to here
}
println("You got Snake Eyes \(snakeeyes) times.")
println("You got Doubles, \(`double`) times.")
источник
dice1 = arc4random_uniform(6) + 1
чтобы получить диапазон от 1 до 6. Я не выполняю цель C iOS и не имею никаких знаний о быстром языке. Случайный метод должен вернуть вам 0-5, а +1 будет 1-6.u_int32_t arc4random_uniform(u_int32_t upper_bound);
Ответы:
Я считаю, что ты должен сделать
чтобы получить диапазон от 1 до 6. Я не выполняю цель C iOS и не имею никаких знаний о быстром языке. Случайный метод должен возвращать значение от 0 до 5, а + 1 сделает его значением от 1 до 6.
Если вам нужен диапазон, скажем, от 10 до 30, просто сделайте
источник
Я сделал расширение типа Int. протестировал его на детской площадке, надеюсь, это будет полезно. Он также принимает отрицательные диапазоны:
использовать как
или определите его как расширение диапазона как свойство, подобное этому:
источник
Довольно много хороших ответов, но я просто хотел поделиться своей любимой функцией генерации случайных чисел Swift для положительных целых чисел:
Swift 2
Swift 3
Вот быстрое обновление для Swift 3, и, в качестве бонуса, теперь он работает для любого типа значения, который соответствует протоколу SignedInteger - намного удобнее для приложений с основными данными, которым необходимо указывать Int16, Int32 и т. Д. Вкратце, если вы действительно нужно, чтобы он работал и с целыми числами без знака, просто скопируйте всю функцию, а затем замените
SignedInteger
наUnsignedInteger
иtoIntMax()
наtoUIntMax()
.Swift 4
Благодаря удалению toIntMax () в Swift 4 теперь нам нужно использовать другие средства преобразования в общий целочисленный тип. В этом примере я использую Int64, который достаточно велик для моих целей, но если вы используете целые числа без знака или имеете настраиваемый тип Int128 или Int256, вам следует их использовать.
Еще одно, для полного random-phile, вот расширение, которое возвращает случайный элемент из
Collection
объекта любого типа. Обратите внимание, что здесь используется указанная выше функция для создания индекса, поэтому вам понадобятся оба.использование
возвращает случайное число от 1 до 6.
возвращает число от 50 до 100 включительно. Естественно, вы можете заменить значения 50 и 100 на все, что захотите.
Swift 4.2
Увы, мой лучший ответ на StackOverflow наконец-то устарел. Теперь вы можете просто
Int.random(in: 1 ... 6)
генерировать случайное число в заданном диапазоне. Также работает для других форм целых чисел и чисел с плавающей запятой. Типы коллекций теперь также предоставляютshuffle()
иrandomElement()
функции. Следовательно, больше нет необходимости в причудливых функциях рандомизации, если вы не хотите использовать определенный тип рандомизатора.источник
randomNumber(-3 ... -1)
работает, если у вас есть пробелы до и после...
. Вы также можете использоватьrandom(-3 ..< -1
для исключения последнего числа.ClosedInterval
вместо,Range
если хотите, чтобы эта работа работала с нецелыми числами.Согласно Swift 4.2 теперь легко получить такое случайное число
для получения дополнительной информации проверьте это
источник
Если хотите, я создам это для случайных чисел. это расширение чисел Int и Double, Float
ИСПОЛЬЗОВАНИЕ:
источник
Swift 3/4:
источник
Это потому, что arc4random_uniform () определяется следующим образом:
Он принимает UInt32 в качестве ввода и выдает UInt32. Вы пытаетесь передать ему диапазон значений. arc4random_uniform дает вам случайное число между 0 и числом, которое вы ему передаете (исключительно), поэтому, если, например, вы хотите найти случайное число между -50 и 50, как в,
[-50, 50]
вы могли бы использоватьarc4random_uniform(101) - 50
источник
Я изменил ответ @DaRk -_- D0G для работы со Swift 2.0
источник
Swift:
источник
Быстро ...
Это включительно, вызов
random(1,2)
вернет 1 или 2, Это также будет работать с отрицательными числами.источник
Ответ - всего 1 строчный код:
Альтернативное решение:
Хотя недостатком является то, что число не может начинаться с 0.
источник
Начиная с Swift 4.2:
Используется как:
источник
Изменить: Swift 4.2+ теперь предоставляет это:
Для меня идиоматично расширять
Range
:В использовании:
источник
C
. Радоваться, веселиться!Я успешно создал случайное число, используя следующий код:
Надеюсь, это поможет тебе.
источник
Решение Swift 3 Xcode Beta 5. На основе ответа Теда ван Галена.
источник
var rangeFromLimits = arc4random_uniform ((UPPerBound - LOWerBound) + 1)) + LOWerBound;
источник
надеюсь, что это работает. сделать случайное число между диапазоном для arc4random_uniform ()?
источник
Возможно, будет полезна эта немного обновленная версия
Range
расширения из ответа Теда ван Галена с использованием Swift 4 / Xcode 9+ :Или это немного «хакерское» решение для поддержки открытых и закрытых интервалов:
Не уверен, есть ли способ добавить свойство одновременно к обоим типам интервалов.
источник