[Android/Kotlin]乱数生成のいろいろ

目次

概要

Kotlinで乱数を生成する。参考ページによると、乱数生成の仕方は複数ある。
本ページではおおよそ3通り紹介する。

ソースコード

MainActivity.kt
package com.seeking_star.test

import android.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import java.util.concurrent.ThreadLocalRandom

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        findViewById<Button>(R.id.button4).setOnClickListener {
            // 乱数生成部分(Double型)( 0<=x<=1.0 )
            var random = Math.random()

            // 範囲指定の乱数(Int型)
            val range = (0 .. 100)
            var rangeRandom = range.random()

            // ThreadLocalRandomを使った乱数(next〇〇メソッドで型、範囲指定)
            var secureRandom = ThreadLocalRandom.current().nextDouble(0.0, 4.9)

            AlertDialog.Builder(this)
                .setTitle("乱数生成")
                .setMessage("生成された乱数 $secureRandom")
                .setNeutralButton("閉じる") { dialog, which ->

                }
                .show()
        }
    }
}
Kotlin

スクリーンショット

詳細

参考ページによると以下の4種類の方法がある様子

項目内容
Math.random()0~1の実数(簡単に言うと小数)を返す。
型はDouble型。
Range型のrandom()([最小値] .. [最大値])のRange型の範囲の整数を返す。
型はInt型。おそらく最も使われるものと思われる。
Range型のshuffled()で得られるものの先頭基本的にRange型のrandom()と同じ。
違うところは、randomメソッドを使わず、shuffledメソッドを使用してランダムに取り出す処理にしていること
ThreadLocalRandom状況に応じて様々なパターンの乱数を生成できる。
基本型はThreadLocalRandom.current().next〇〇([最小値], [最大値])
型はInt, Doubleなど任意に指定できる。

HPとか残り時間とか、そういったメーターを表示するときはMath.random()がいいかもしれない。

参考ページ:
ヒヨコ プログラミング(ヒヨプロ)