Hỏi về random trong C#

mọi người ơi cho mình hỏi làm sao để random trong C#
vi dụ lúc đầu mình muốn random từ 3 đến 15 thì dùng
Random r = new Random();
a = r.Next(3, 15);
nhưng sau đó mình lại không muốn chọn ra số 7(và nhiều số khác) trong cái random đó vì đủ số lượng số 7 rồi vậy thì có cách nào bỏ số 7 ra khỏi r không ạ?

Bạn có thể làm một array (ở đây mình xài List):

using System.Linq;
using System.Collections.Generic;
var pool = Enumerable.Range(3, 15).Select(x => new KeyValuePair<int,int>(3, x)).ToList();
// Ví dụ với mỗi số, cho số lần được random ra là 3 lần tối đa.

Bạn dùng Random từ 0 tới (pool.Count - 1), sau đó trừ đi bộ đếm:

var i = r.Next(0, pool.Count - 1);
var selectedNumber = pool[i].Value;
pool[i].Key--;

Nếu bộ đếm về zero thì loại bỏ phần tử ra khỏi List:

if (pool[i].Key <= 0) {
   pool[i] = pool[pool.Count - 1];
   pool.RemoveAt(pool.Count - 1);
}
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?