30/09/2018, 16:47
Hàm random trong C++
Chào mọi người, cho e hỏi làm thế nào để sử dụng hàm random cho một mảng mà các giá trị không bị lặp lại ạ?
Bài liên quan
Chào mọi người, cho e hỏi làm thế nào để sử dụng hàm random cho một mảng mà các giá trị không bị lặp lại ạ?
Sau khi bạn lấy giá trị của phần tử bạn vừa lấy bằng giá trị của hàm rand bạn xóa phần tử đó đi luôn thì sẽ không bị lặp lại đâu bạn.
Bạn không muốn làm thay đổi mảng giá trị thì bạn nên clone mảng đó ra rồi thao tác trên mảng clone là OK. Mảng gốc vẫn nguyên.
Nếu mà sau n lần xóa mảng đó rỗng thì bạn lại check xem mảng đó rỗng chưa để lại clone ra 1 mảng khác, như vậy sẽ không bị gián đoạn khi lấy giá trị.
là như thế nào hả bạn? ví dụ mình muốn lấy giá trị rand từ 0-15 cho một mảng 16
Thì bạn lấy xong bạn xóa phần tử vừa lấy trong mảng đó đi như vậy từ sau giá trị nó sẽ không có thằng vừa lấy nữa.
hỏi ngu tiếp nhưng mà xóa như thế nào hả bạn?
Nếu bạn sử dụng List trong các ngôn ngữ bậc cao thì bạn chỉ cần gọi hàm remove(int i) để xóa phần tử.
Còn nếu bạn sử dụng ngôn ngữ bậc thấp mà dùng mảng thì bạn có thể set giá trị tại vị trí đó về một giá trị cụ thể nào đó. Xong bạn check nếu mà phần tử vừa random ra mà có giá trị như bạn set thì gọi tiếp random để nó bỏ qua giá trị đó. (Đó là 1 giải pháp)
bạn có thể cụ thể hơn được không? mình dùng C++, mình chỉ muốn hỏi có thể chỉ dùng hàm rand hoán vị các phần tử hay không, hay buộc phải dùng giải pháp khác ví dụ như so sánh vs các phần tử trước đó, bạn có thể cho ví dụ cụ thể không?
Hàm rand nó chỉ đưa ra 1 số ngẫu nhiên trong 1 khoảng mà bạn định nghĩa cho nó. Và giá trị có thể bị lặp lại.
Nếu bạn khong muốn bị lặp lại thì chỉ có cách dùng như trên thôi.
(Mình chỉ viết nhanh không theo cú pháp, bạn hiểu là được)
VD: Với ngôn ngữ bậc cao
Với ngôn ngữ bậc thấp
Cảm ơn bạn nhiều