Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 18 kết quả

Đề tài: Thuật toán tạo mảng ngẫu nhiên ko trùng chạy không đúng?

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

    Mặc định Thuật toán tạo mảng ngẫu nhiên ko trùng chạy không đúng?

    Mình có hàm sau
    Code:
            int[] MangNgauNhien(int n)
            {
                int[] kq = new int[n];
                for (int i = 0; i < n; i++)
                {
                    kq[i] = i;
                }
                for (int i = 0; i < n; i++)
                {
                    int r1 = new Random().Next(n);
                    int r2 = new Random().Next(n);
                    int tmp = kq[r1];
                    kq[r1] = kq[r2];
                    kq[r2] = tmp;
                }
                return kq;
            }
    Sao mình
    Code:
    int[] test = MangNgauNhien(10);
    Khi debug từng dòng thì chạy đúng, nhưng khi nhấn F5 thì lại chạy k đúng, có bạn nào giải thích hộ mình với

  2. #2
    Ngày gia nhập
    11 2008
    Nơi ở
    An Giang
    Bài viết
    502

    Vì khi bạn Debug giá trị ngẫu nhiên nó chưa ra nên lúc đó bạn thấy nó ko bị trùng.
    Gọi cho vào 1 mảng các giá trị sẵn ví dụ: 1,2,3,4... Khi gán phần tử nào vào mảng thì bạn Remove phần tử đó liền thì sẽ ko bị trùng.

  3. #3
    Ngày gia nhập
    04 2012
    Bài viết
    53

    đã là ngẫu nhiên thì vào một ngày đẹp trời nó sẽ trùng..

    trừ khi kết hợp với số ngẫu nhiên với các hàm kiểm tra khác,
    ví dụ ta luu số ngẫu nhiên trước kia vào cơ sỡ dữ liệu.
    sau này tạo số ngẫu nhiên mới lôi nó ra so nếu không trùng thì lấy , trùng thì load lại

    (nói vậy thế thôi chứ mình cũng chưa bao giờ dùng số ngẫu nhiên, thấy số của nó xấu òm) ,hjhj

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

    Trích dẫn Nguyên bản được gửi bởi huuhung Xem bài viết
    Vì khi bạn Debug giá trị ngẫu nhiên nó chưa ra nên lúc đó bạn thấy nó ko bị trùng.
    Gọi cho vào 1 mảng các giá trị sẵn ví dụ: 1,2,3,4... Khi gán phần tử nào vào mảng thì bạn Remove phần tử đó liền thì sẽ ko bị trùng.
    Cái này mình tạo 1 mảng ghi số từ đầu đến cuối, sau đó chọn ra chỉ số ngẫu nhiên để đổi giá trị nó với nhau thôi, nhưng vấn đề nhấn F5 nó chạy sai....chạy từng dòng thì lại đúng, mình nghĩ chắc nó bất đồng bộ

  5. #5
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Nó chạy sai thế nào bạn? Sao ko chơi kiểu List đi. Cái đó hỗ nhiều. Với bài này thì bạn tạo một cái list. Trước khi add vào mảng thì kiểm tra xem trong list có chưa? nếu chưa có thì add vào list+ gán giá trị vào cho mảng. Nếu tồn tại trong list thì random() cho tới khi nào thỏa mãn thì thui. Vậy là ok roài.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  6. #6
    Ngày gia nhập
    04 2012
    Bài viết
    53

    Mặc định Thuật toán tạo mảng ngẫu nhiên ko trùng chạy không đúng?

    thế thì đừng dùng số ngẫu nhiên,,,,, dùng chay đi,

  7. #7
    Ngày gia nhập
    02 2011
    Bài viết
    17

    Trích dẫn Nguyên bản được gửi bởi mrfour.it Xem bài viết
    Nó chạy sai thế nào bạn? Sao ko chơi kiểu List đi. Cái đó hỗ nhiều. Với bài này thì bạn tạo một cái list. Trước khi add vào mảng thì kiểm tra xem trong list có chưa? nếu chưa có thì add vào list+ gán giá trị vào cho mảng. Nếu tồn tại trong list thì random() cho tới khi nào thỏa mãn thì thui. Vậy là ok roài.
    Mình muốn thử nhiều cách, cách dùng list mình làm rùi, mình thử làm cách này chạy tay đc mà chạy máy k đc :(

  8. #8
    Ngày gia nhập
    04 2010
    Nơi ở
    Recycle Bin
    Bài viết
    358

    Bạn viết 1 hàm kiểm tra trùng nữa. Random 1 số rồi kiểm tra có trùng không, nếu không trùng thì mới sử dụng. Chạy chậm nhưng kết quả như ý
    YH : lobuocphuudu_218
    Phone : 0126 463 5095

    http://forums.congdongcviet.com/signaturepics/sigpic55872_2.gif

  9. #9
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Trích dẫn Nguyên bản được gửi bởi chienthan_16_12 Xem bài viết
    Mình muốn thử nhiều cách, cách dùng list mình làm rùi, mình thử làm cách này chạy tay đc mà chạy máy k đc :(
    Muốn thử nhiều cách à? có vẻ hơi rảnh nhỉ. Vậy thì làm kiểu này đi. tương tự dùng List. Bạn làm cái mảng 1 chiều kiểu bool có kích thước = số phần tử muốn tạo. Lúc đầu khởi tạo nó một giá trị mặc định (true/false tùy quy ước bạn thích). Trước khi thêm vào mảng giá trị thật, bạn kiểm tra xem giá trị mảng boool tại index=random value đã thay đổi so với ban đầu chưa( mặc định true-> false..), nếu chưa thì thêm vào+ đảo giá trị của cái Item bool. Vậy là xong.hehe.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  10. #10
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Có nhìn nhầm không ta?

    Bạn tạo mảng số từ 1 đến n với thứ tự ngẫu nhiên?

    Bạn new 2 cái Random làm gì? dùng 1 cái thôi bạn

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

  1. Tạo một chuỗi ngẫu nhiên không trùng lặp trong lập trình C#
    Gửi bởi vinhson trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 17
    Bài viết cuối: 20-05-2012, 02:37 PM
  2. Lập trình C++ Cách sử dụng hàm random để tạo số ngẫu nhiên không trùng nhau?
    Gửi bởi reach_phan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 10-11-2011, 09:53 PM
  3. Chèn 120 ảnh lên 120 button một cách ngẫu nhiên không trùng lặp
    Gửi bởi nguyenson197 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 16-06-2011, 10:14 AM
  4. Tạo số ngẫu nhiên không trùng nhau lưu vào mảng?
    Gửi bởi icde trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 20-09-2009, 09:55 PM
  5. [ Solved ]Tạo số ngẫu nhiên không trùng nhau
    Gửi bởi jacking_nguyen1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 31
    Bài viết cuối: 23-09-2008, 06:41 PM

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