Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Cách tạo dãy số ramdom không trùng lặp trong C#??

  1. #1
    Ngày gia nhập
    05 2011
    Bài viết
    78

    Mặc định Cách tạo dãy số ramdom không trùng lặp trong C#??

    1.Mình muốn nhập vào 1 dãy số (0,10000).
    2.Sau đó thực hiện ramdom để lấy ra duy nhất một số và lưu số đó vào csdl.
    3.Sau đó nữa, mình lại tiếp tục ramdom dãy số trên.
    Thắc mắc: làm sao để ramdom mà số tiếp theo không phải là số đã lấy ra ở bước 2 trên. Nghĩa là: ramdom ra số 01234, lưu vào CSDL. Tiếp tục ramdom lần sau, thì máy sẽ không bao giờ xuất hiện số 01234 nữa???
    Cám ơn các bạn rất nhiều


    Trước đó, mình đã làm theo cách thủ công là kiểm tra số mỗi lần ramdom, nếu đã có thì thực hiện ramdom lại. Nhưng như thế thì đến một lúc sẽ lặp mãi (cụ thể, đã xuất hiện 9999 số thì lần ramdom tiếp theo sẽ bị lặp liên tục...)

  2. #2
    Ngày gia nhập
    03 2011
    Nơi ở
    Huế
    Bài viết
    37

    Bạn chỉ cần xóa phần tử ra khỏi dãy sau khi đã lấy được nó. Code mình minh họa thế này nhé
    Code:
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    public class RunClass
    {
        public static void Main()
        { 
            List<int> listNumber = new List<int>();
            for (int i = 1; i < 100; i++)
            {
                listNumber.Add(i);
            }
    
            int n = listNumber.Count;
            Random random = new Random();
            int randomIndex;
            while (n > 0)
            {
                randomIndex = random.Next(0, n);
                Console.WriteLine(listNumber[randomIndex].ToString());
                listNumber.RemoveAt(randomIndex);
                n = listNumber.Count;
            }
    
        }
    }

  3. #3
    Ngày gia nhập
    01 2009
    Bài viết
    14

    Bạn random từ dãy số từ trong khoảng 0 -> 10000 => thì bạn tối đa là 9998 số không trùng lặp. Tới hạn, thì bạn làm gì thì nó cũng trùng lặp lại thôi. Chỉ có tăng khoảng cấp phát thì số được cấp phát mới tăng lên được.

  4. #4
    Ngày gia nhập
    05 2011
    Bài viết
    78

    Bạn chỉ cần xóa phần tử ra khỏi dãy sau khi đã lấy được nó. Code mình minh họa thế này nhé
    Code:
    using System;
    using System.Collections.Generic;
    using System.Text;

    public class RunClass
    {
    public static void Main()
    {
    List<int> listNumber = new List<int>();
    for (int i = 1; i < 100; i++)
    {
    listNumber.Add(i);
    }

    int n = listNumber.Count;
    Random random = new Random();
    int randomIndex;
    while (n > 0)
    {
    randomIndex = random.Next(0, n);
    Console.WriteLine(listNumber[randomIndex].ToString());
    listNumber.RemoveAt(randomIndex);
    n = listNumber.Count;
    }

    }
    }
    Để mình thử cái này xem sao.

    Bạn random từ dãy số từ trong khoảng 0 -> 10000 => thì bạn tối đa là 9998 số không trùng lặp. Tới hạn, thì bạn làm gì thì nó cũng trùng lặp lại thôi. Chỉ có tăng khoảng cấp phát thì số được cấp phát mới tăng lên được.
    Ừ, mình cũng nghĩ sẽ trùng.

    Vì mình đang làm một chương trình bốc số xe máy.
    Với tập thực thể Biển số, kho số, ký hiệu, số xe.
    Một biển số có chứa ký hiệu và số xe (ví dụ: 75 k1 - 01234). Số xe có trạng thái đã sử dụng và nằm trong kho số. Kho số có dãy số bắt đầu và dãy số kết thúc.
    Ý của mình là: khi quay số trong với hàm ramdom(DaysoBatDau,DaySoKetThuc) sẽ tạo ra biển số chứa kí tự và số xe. Số xe sẽ được chuyển sang trạng thái đã sử dụng. Và khi ramdom lần sau thì những số đã sử dụng sẽ không xuất hiện nữa.

    Thanks đã đọc và giúp đỡ.

Các đề tài tương tự

  1. Kiểm tra dữ liệu có trùng hay không trong C#?
    Gửi bởi wyku trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 17-12-2011, 07:05 PM
  2. mệnh đề if ...else trong hàm trùng phương
    Gửi bởi behoclaptrinh1993 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 25-09-2011, 11:37 PM
  3. Graphic Tạo 2 điểm ramdom và tính toán khoảng cách giữa chúng?
    Gửi bởi beginer trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 20
    Bài viết cuối: 11-04-2011, 11:48 AM
  4. Hiện Ramdom ô chữ kiểu trò chơi đoán ô chữ
    Gửi bởi daovthinh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 11-07-2010, 10:16 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn