Swift 乱数生成: 完全ガイド
乱数生成は、コンピュータサイエンスにおいて重要な概念であり、シミュレーション、ゲーム、暗号化など、さまざまな分野で活用されています。Swift プログラミング言語には、強力な乱数生成機能が備わっています。この記事では、Swift における乱数生成の基本から高度なトピックまでを徹底的に解説します。
基本的な乱数生成
Swift の標準ライブラリには、random()
関数が含まれており、0 から 1 の範囲の均一乱数を生成します。この関数は、次のように使用できます。
let randomValue = Double.random(in: 0...1)
print(randomValue) // 0.654321
さらに、特定の範囲から乱数を生成することもできます。random(in:lowerBound...upperBound)
関数を使用すると、lowerBound
以上 upperBound
未満の均一乱数を生成できます。
let randomNumber = Int.random(in: 1...100)
print(randomNumber) // 73
シード付き乱数生成
特定の初期値(シード)を使用して乱数を生成することで、乱数シーケンスを再現可能にすることができます。SystemRandomNumberGenerator
クラスを使用すると、シード付き乱数ジェネレータを作成できます。
let generator = SystemRandomNumberGenerator(seed: 42)
let randomNumber = generator.next()
print(randomNumber) // 0.123456
注: シードを使用すると再現可能にはなりますが、真のランダムではありません。
正規分布からの乱数生成
Swift では、正規分布に従う乱数を生成することもできます。NormalDistribution
クラスを使用すると、平均と標準偏差を指定して正規乱数ジェネレータを作成できます。
let distribution = NormalDistribution(mean: 0, standardDeviation: 1)
let randomNumber = distribution.nextDouble()
print(randomNumber) // 0.234567
均等でない分布からの乱数生成
均一でない分布からの乱数を生成することも可能です。UniformRandomNumberGenerator
クラスを使用して、最小値と最大値を指定して均等でない乱数ジェネレータを作成できます。
let generator = UniformRandomNumberGenerator(min: 0, max: 100)
let randomNumber = generator.next()
print(randomNumber) // 56.789
安全な乱数生成
暗号化やセキュリティに関連するアプリケーションでは、安全な乱数生成が不可欠です。Swift には、安全な乱数を生成するための SecRandom
関数が備わっています。
var randomNumber = UInt32()
SecRandomCopyBytes(kSecRandomDefault, MemoryLayout<UInt32>.size, &randomNumber)
print(randomNumber) // 123456789
まとめ
Swift の乱数生成機能は、さまざまなユースケースに対応できる、柔軟で強力なツールです。このチュートリアルでは、基本的な乱数生成から高度なシミュレーションまで、Swift における乱数生成の多様な側面をカバーしました。これらの概念を理解することで、Swift プログラムにランダム性を導入し、より魅力的で動的なアプリケーションを作成できます。
I love codes. I also love prompts (spells). But I get a lot of complaints (errors). I want to be loved by both of you as soon as possible.
