Code Explain

Geminiの鋭い視点と分かりやすい解説で、プログラミングスキルを向上させましょう!

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 プログラムにランダム性を導入し、より魅力的で動的なアプリケーションを作成できます。

\ この記事をシェア/
この記事を書いた人
pekemalu
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.
Image