A tạo ngẫu nhiên mảng một chiều n phần tử nguyên có giá trị thuộc 50 50

Khởi tạo số ngẫu nhiên thường được dùng để giảm bớt công đoạn nhập số cho mảng một chiều, ma trận,... Để khởi tạo số ngẫu nhiên ta cần biết đến hàm srand[] và rand[] trong stdlib.h. Trong C++ 2 hàm này có sẵn trong iostream.

Hàm srand


Cú pháp: void srand [unsigned int seed];
Dùng để khởi tạo một số ngẫu nhiên theo một số seed. Số ngẫu nhiên được tạo là pseudo-random, tức là số ngẫu nhiên giả, có thể đoán được số kế tiếp. Mỗi một số seed sẽ cho ra một bộ số random khác nhau.
Để cho mỗi số seed khác nhau người ta thường dùng kèm với unsigned int time[NULL] trong thư viện time.h, hàm time[NULL] trả về số giây đã trôi qua kể từ ngày 1/1/1970.
Hàm srand[] thường được gọi trước khi gọi hàm rand[].

Hàm rand


Cú pháp: int rand[void];
Trả về một số nguyên random giả trong khoảng từ 0 đến RAND_MAX. Hằng RAND_MAX được định nghĩa trong stdlib.h đảm bảo ít nhất bằng 32767.
Nếu chỉ dùng hàm rand[] thì sẽ cho ra những số random giống nhau mỗi lần chạy, vì vậy người ta thường khai báo srand[time[NULL]] trước để kết quả random mỗi lần mỗi khác nhau.

Để lấy số ngẫu nhiên từ 0 đến n, ta sử dụng rand[]%[n+1]
Để lấy số ngẫu nhiên từ a đến b, ta sử dụng a + rand[]%[b-a+1] Ví dụ: Code C:#include #include #include int main[] { int a, b; srand[time[NULL]]; printf["a = %d\n", rand[]%100]; //Ngẫu nhiên từ 0 đến 99 printf["b = %d\n", 50+rand[]%51]; // 50 đến 100 return 0; } Bonus thêm một số hàm hay dùng:
Hàm Random từ 0 đến n:
int Random[int n] { return rand[]%[n+1]; }
Hàm Random từ a đến b:
int Random[int a, int b] { return a + rand[]%[b-a+1]; }
Hàm Random số thực từ 0 đến n:
float Random[float n] { return n*rand[]/RAND_MAX; }
Hàm Random số thực từ a đến b:
float Random[float a, float b] { return a + [b - a]*rand[]/RAND_MAX; }
Hàm Random cho mảng một chiều:
void Random[int *a, int n] { for[int i = 0; i < n; i++] a[i] = rand[]; }

Page 2

home lập trình tản mạn about

1

Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng [?]

Làm quen cách viết các chương trình đơn giản, cách sử dụng:

Mô tả bài toán

Nhập [random], xuất mảng một chiều các số nguyên tăng dần

Hướng dẫn

Định nghĩa

Để thực hiện chương trình này, vui lòng xem trước 2 bài:

  • Phát sinh số ngẫu nhiên trong C++ [Random number generation]
  • Mảng 1 chiều trong C++ [Arrays]

Bài tập mang tính tham khảo, hỗ trợ các bạn làm quen và luyện tập với các bàn toán lập trình cơ bản trong C++.

Kteam khuyến khích các bạn tự phân tích đề bài > tự giải bài toán > debug để kiểm tra kết quả và fix lỗi trong quá trình giải. Sau đó, bạn có thể tham khảo source code mẫu để hoàn chỉnh bài tập. 

Để được hỗ trợ tốt nhất, bạn có thể đặt câu hỏi ở phần bình luận bên dưới bài viết hoặc ở mục Hỏi & Đáp.

Source code tham khảo

#include #include // for srand[] and rand[] #include // for time[] using namespace std; // định nghĩa số phần tử mảng #define MAX 1000 // khai báo prototype void nhapMang[int arr[], int &n]; void xuatMang[int arr[], int n]; int main[] { int myArray[MAX]; // mảng myArray có MAX phần tử int nSize; // nSize là số phần tử được sử dụng, do user nhập // nhập xuất mảng tự động nhapMang[myArray, nSize]; xuatMang[myArray, nSize]; return 0; } // hàm nhập mảng void nhapMang[int arr[], int &n] { // khởi tạo số ngẫu nhiên srand[time[NULL]]; cout > n; if [n > 0] { arr[i] = rand[] % 100 // khởi tạo ngẫu nhiên từng phần tử từ chỉ số 1 đến n – 1 for [int i = 1; i < n; i++] { arr[i] = arr[i - 1] + rand[] % 100; } } } // hàm xuất mảng void xuatMang[int arr[], int n] { // xuất từng phần tử cho mảng từ chỉ số 0 đến n – 1 for [int i = 0; i < n; i++] { cout

Chủ Đề