29 กรกฎาคม 2556

[Android Code] การ Random ตัวเลขจำนวนหลายๆตัว


        สำหรับบทความนี้ก็ต่อเนื่องจากบทความที่แล้วนะครับในเรื่อง [Android Code] การ Random ตัวเลขเบื้องต้น

        ซึ่งคราวนี้ก็ต่อกันด้วยวิธีการสุ่มตัวเลขหลายๆตัวกันต่อ


        จากบทความก่อนหน้านี้ ผู้ที่หลงเข้ามาอ่านก็คงจะจำกันได้อยู่ว่าการสุ่มตัวเลขแบบหลายๆตัวจะมีอยู่แล้วในคำสั่ง nextBytes โดยค่าที่ได้จะเป็น Byte ที่จะเก็บไว้ใน Byte Array อีกทีหนึ่ง แต่คราวจะทำเป็น Integer แทนเพราะยืดหยุ่นกว่าเวลาใช้งาน

        บทความนี้ก็คงจะไม่อธิบายยาวเหยียดอะไรมาก เพราะอธิบายพื้นฐานไปแล้ว และคราวนี้มีฟังก์ชันให้

Main.java
package app.akexorcist.randomarraysimple; import java.util.Random; import android.os.Bundle; import android.app.Activity; public class Main extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); int[] data = new int[10]; data = randomIntArray(data.length, 10, 55); } public int[] randomIntArray(int count, int min, int max) { Random r = new Random(); int[] data = new int[count]; for(int i = 0 ; i < count ; i++) data[i] = -1; for(int i = 0 ; i < count ; i++) { int n = -1; boolean st = true; while(st) { st = false; n = r.nextInt((max - min) + 1) + min; for(int j = 0 ; j < data.length ; j++) if(n == data[j]) st = true; } data[i] = n; } return data; } }

        1. ประกาศตัวแปร Integer Array และกำหนดให้มีขนาด 10 ช่อง จากนั้นก็เรียกฟังก์ชัน randomIntArray โดยให้สุ่ม Integer จำนวน 10 ตัว ค่าสุ่มต่ำสุดเป็น 10 ค่าสุ่มสูงสุดเป็น 15

        2. ฟังก์ชันสำหรับสุ่มตัวเลขออกมาเป็น Integer Array

        3. ประกาศคลาส Random และ Integer Array สำหรับใช้สุ่มค่า

        4. กำหนดให้ Integer Array ที่สร้างขึ้นมามีค่าเป็น - 1 ทุกตัว

        5. ทำการสุ่มตัวเลขในช่วงที่กำหนด แล้วเก็บลงใน Integer Array และตรวจสอบด้วยว่าตัวเลขซ้ำกับที่อยู่ใน Integer Array หรือไม่

        6. Return ค่า Integer Array ที่สุ่มเสร็จแล้วกลับไป

main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.akexorcist.randomarraysimple" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="app.akexorcist.randomarraysimple.Main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

        สำหรับตัวอย่างจะไม่มีการแสดงค่าให้เห็น เก็บไว้ในตัวแปร data ถ้าต้องการอยากแสดงค่าเพื่อตรวจสอบก็ให้ลองแสดงใน LogCat
String str = ""; for(int i = 0 ; i < data.length ; i++) str += String.valueOf(data[i]) + " "; Log.i("Check", str);

        สำหรับผู้ที่หลงเข้ามาอ่านที่ต้องการไฟล์ตัวอย่างสามารถดาวน์โหลดได้จาก Random Array Simple [Google Drive] หรือ Random Array Simple [GitHub]



บทความที่เกี่ยวข้อง

        • การ Random ตัวเลขเบื้องต้น
        • การ Random ชุดสีที่เตรียมไว้มาแสดง




เหล่าพันธมิตรแอนดรอยด์

Devahoy Layer Net NuuNeoI The Cheese Factory Somkiat CC Mart Routine Artit-K Arnondora Kamonway Try to be android developer Oatrice Benz Nest Studios Kotchaphan@Medium Jirawatee@Medium Travispea@Medium