鼻間違ったから乱数の生成方法を紹介します。
Math.random()
Math.random()
は 0 <= n < 1
範囲の数字(Double)をランダムに生成します。
fun main(args: Array<String>){
println(Math.random()) // 0 <= n < 1
println(Math.random())
println(Math.random())
}
Output:
0.8510430769472556
0.30969568684879034
0.44610616095278166
Range.random()
任意の数の範囲が定義されたRangeオブジェクトの random()
メソッドを呼び出すと、その範囲の乱数が返されます。
fun main(args: Array<String>){
val range = (1..15) // 1 <= n <= 15
println(range.random())
println(range.random())
val random = (1..20).random() // 1 <= n <= 20
println(random)
}
Output:
4
13
7
ThreadLocalRandom
ThreadLocalRandomを利用して、指定した範囲の乱数Int、Double、Longを生成することができます。
import java.util.concurrent.ThreadLocalRandom
fun main(args: Array<String>){
val randomDouble = ThreadLocalRandom.current().nextDouble(1.0, 10.0)
val randomInteger = ThreadLocalRandom.current().nextInt(1, 10)
val randomLong = ThreadLocalRandom.current().nextLong(1, 10)
println(randomDouble) // 1 <= n < 10.0
println(randomInteger) // 1 <= n < 10
println(randomLong) // 1 <= n < 10
}
Output:
1.7703291471753246
6
8
SecureRandom
上で紹介し方法は、所定のパターンでランダム番号を生成します。そのため、パターンを見つけて生成された数字を予測することができます。
SecureRandomは予測が不可能な乱数を生成してSecurity面でお勧めします。
import java.security.SecureRandom
fun main(args: Array<String>){
val secureRandom = SecureRandom()
println(secureRandom.nextInt(100)) // 0 <= n < 100
println(secureRandom.nextDouble())
}
Output:
import java.security.SecureRandom
fun main(args: Array<String>){
val secureRandom = SecureRandom()
println(secureRandom.nextInt(100)) // 0 <= n < 100
println(secureRandom.nextDouble())
}
Related Posts
- Kotlin - エルビス演算子(Elvis Operation)
- Kotlin - Timer、定期的に関数を実行する
- Kotlinで正規表現を使用する
- Kotlin - 文字列の比較方法(equals、==、compareTo)
- Kotlin - 2つのList一つの併合
- Kotlin - ディレクトリのすべてのファイルのリスト出力
- Kotlin - リストの並べ替え方法(sort、sortBy、sortWith)
- Kotlin - 乱数生成(Random、SecureRandom)
- Kotlin - StringをFloatに変換
- Kotlin - Destructuring Declaration
- Kotlin - objectとclassキーワードの違い
- Kotlin - 現在の日付と時刻を取得する方法