Tạo một mảng gồm n số tự nhiên khác nhau từ 0 đến n-1 (random - ngẫu nhiên):
Gửi các bạn thuật toán tạo mảng số tự nhiêu khác nhau, chi tiết xem bên dưới:
1/ Yêu cầu: Tạo 1 mảng A[n] gồm các số nguyên ngẫu nhiên từ 0 --> n - 1 khác nhau.
Ví dụ: n = 10: tạo ra mảng A[] gồm 10 số tự nhiên khác nhau như sau A[ ] = { 9, 3, 8, 5, 4, 6, 7, 2, 0, 1};
2/ Thuật toán:
Bước 1:
- n
- Khởi tạo mảng A[i] = i; i : 0--> n-1
Bước 2: - Lặp cho tới khi n > 0:
. Chọn 1 số id ngẫu nhiên (random) trong khoảng từ 0 --> n -1
. Hoán đổi số A[id] (vừa chọn ngẫu nhiên) và A[n-1] ( tức là số vừa chọn xong lần lượt cất vào cuối mảng )
. Giảm n = n -1
3/ Code sample:
// 1. khai bao mang A[] va doi tuong s_math_random
//khai bao bien
static java.util.Random s_math_random = new java.util.Random();
int Max = 10;// kich thuoc mang A
int A[] = new int[Max];
// 2. gan gia tri ban dau cho mang A[]
for ( int i = 0; i < Max; i++ )// khoi tao mang A[]
{
A[i] = i;
}
// 3. sinh mang A[] cac so int ngau nhien tu 0 --> Max -1
int n = Max, temp = 0, id_Random = 0;
while ( n > 0 )
{
id_Random = s_math_random.nextInt(n);// hàm random()
temp = A[n-1];
A[n-1] = A[id_Random];
A[id_Random] = temp;
n--;
}
// in mang A[]
for (int i = 0; i < Max; i++)
{
System.out.print(A[i] + ", ");
}
System.out.println();
Gửi các bạn thuật toán tạo mảng số tự nhiêu khác nhau, chi tiết xem bên dưới:
1/ Yêu cầu: Tạo 1 mảng A[n] gồm các số nguyên ngẫu nhiên từ 0 --> n - 1 khác nhau.
Ví dụ: n = 10: tạo ra mảng A[] gồm 10 số tự nhiên khác nhau như sau A[ ] = { 9, 3, 8, 5, 4, 6, 7, 2, 0, 1};
2/ Thuật toán:
Bước 1:
- n
- Khởi tạo mảng A[i] = i; i : 0--> n-1
Bước 2: - Lặp cho tới khi n > 0:
. Chọn 1 số id ngẫu nhiên (random) trong khoảng từ 0 --> n -1
. Hoán đổi số A[id] (vừa chọn ngẫu nhiên) và A[n-1] ( tức là số vừa chọn xong lần lượt cất vào cuối mảng )
. Giảm n = n -1
3/ Code sample:
// 1. khai bao mang A[] va doi tuong s_math_random
//khai bao bien
static java.util.Random s_math_random = new java.util.Random();
int Max = 10;// kich thuoc mang A
int A[] = new int[Max];
// 2. gan gia tri ban dau cho mang A[]
for ( int i = 0; i < Max; i++ )// khoi tao mang A[]
{
A[i] = i;
}
// 3. sinh mang A[] cac so int ngau nhien tu 0 --> Max -1
int n = Max, temp = 0, id_Random = 0;
while ( n > 0 )
{
id_Random = s_math_random.nextInt(n);// hàm random()
temp = A[n-1];
A[n-1] = A[id_Random];
A[id_Random] = temp;
n--;
}
// in mang A[]
for (int i = 0; i < Max; i++)
{
System.out.print(A[i] + ", ");
}
System.out.println();