Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Giúp chia nhóm ngẫu nhiên với số lượng bằng nhau
#1
Mình muốn chia nhóm (Danh sách được lấy ngẫu nhiên) Sao cho số lượng mỗi nhóm bằng nhau.
Ai biết giúp mình với.
File đính kèm
Chữ ký của Nguyendinhthanh My site: Tài liệu
ღღღღღTài sản của Nguyendinhthanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#2
Để chia nhóm, quan trọng không phải là viết code mà là thuật toán. Mình gợi ý một thuật toán tuần tự thế này:
Giả định bạn cần phân ra n nhóm. Ta xếp record cho hết nhóm này, tới nhóm khác, khi đủ thì xoay lại từ đầu cho tới khi hết.
N: số nhóm.
M=1, nhóm hiện đang xem xét

Bước 1: Chọn ra các record chưa xếp vào nhóm nào.
Bước 2:Lấy về số RecordCount.
if RecordCount>0 then
Bước 3: Nhảy về record đầu tiên.

lấy 1 số ngẫu nhiên r trong khoảng 0-RecordCount
Nhảy tới record thứ r. Gán cho nó vào nhóm m.
Nếu m=n thì gán m=1, ngược lại thì cho m=m+1
Quay lại bước 1
end if


Mời bạn xem code

Mã:
Sub sChiaNhom(m As Integer)
Dim rec1 As Recordset
Dim r, k As Integer ' r :so ngau nhien, k so record, n- tong so nhom, m- so nhom hien hanh
Set rec1 = CurrentDb().OpenRecordset("SELECT Chianhom2, chon FROM danhsach2 WHERE chon=no")
k = rec1.RecordCount
If k <> 0 Then
rec1.MoveFirst
    Randomize
    r = Int((k * Rnd())) ' lay mot so ngau nhien trong cac record con lai
    rec1.Move r ' nhay toi record r
    rec1.Edit
    rec1!Chianhom2 = m
    rec1!chon = True
    rec1.Update
    rec1.Close
    If m = n Then
        m = 1
     Else
        m = m + 1
     End If
     sChiaNhom m ' quay lai buoc 1
    
Else
MsgBox " da chia nhom xong, hay click form duoi va xem ket qua"
End If

End Sub

Khi đó, ta tạo 1 nút nhấn:
Mã:
Dim n As Integer ' tong so nhom

Private Sub Command0_Click()
Dim m As Integer
m = 1 ' so bat dau cua m
n = 6 ' thay so nhom ban muon chia vao day
sChiaNhom m
End Sub

Lưu ý, dữ liệu bạn sẽ bị tranh chấp trong quá trình tính toán nếu bạn đang mở nó ở 1 form khác. Vì vậy, bạn phải tạo 1 form để run riêng, 1 form để hiển thị riêng.
Mời bạn xem demo.
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Nguyendinhthanh
#3
Mình hỏi thêm chút nhé:
- Chia ra số nhóm như vậy, sao cho ứng với mỗi mã, không được xếp ở một nhóm nhiều hơn 1 lần thì sao?
(Ví dụ: mã 001 đã vào nhóm 1 thì thôi không vào nhóm 2-3-4-5-6)
Chữ ký của Nguyendinhthanh My site: Tài liệu
ღღღღღTài sản của Nguyendinhthanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
Khi đã xếp rồi, ô chọn đã check là yes. Ở vòng lặp sau, ta đã lọc bỏ nó ra, không gọi lại nó nữa thì làm sao vào nhóm khác được. Bạn thử demo chưa?
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
(09-07-11, 10:24 PM)Noname Đã viết: Khi đã xếp rồi, ô chọn đã check là yes. Ở vòng lặp sau, ta đã lọc bỏ nó ra, không gọi lại nó nữa thì làm sao vào nhóm khác được. Bạn thử demo chưa?

Mình xem demo roi. Van de la, o truong ma, co nhieu ma trung nhau, khong duoc lay ma trung nhau de xep vao nhom (Ví dụ: 1000 hạt màu xanh, 1000 hạt màu vàng, ... mình đang giải quyết bài toán xác suất của Menden nên cột mã hạt trùng nhau, khi xếp nhóm, các hạt đó lấy không được trùng màu)
Chữ ký của Nguyendinhthanh My site: Tài liệu
ღღღღღTài sản của Nguyendinhthanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
(09-07-11, 11:02 PM)Nguyendinhthanh Đã viết:
(09-07-11, 10:24 PM)Noname Đã viết: Khi đã xếp rồi, ô chọn đã check là yes. Ở vòng lặp sau, ta đã lọc bỏ nó ra, không gọi lại nó nữa thì làm sao vào nhóm khác được. Bạn thử demo chưa?

Mình xem demo roi. Van de la, o truong ma, co nhieu ma trung nhau, khong duoc lay ma trung nhau de xep vao nhom (Ví dụ: 1000 hạt màu xanh, 1000 hạt màu vàng, ... mình đang giải quyết bài toán xác suất của Menden nên cột mã hạt trùng nhau, khi xếp nhóm, các hạt đó lấy không được trùng màu)

Nếu ở trường Mã mà có nhiều mã trùng nhau thì trường đó không gọi là Mã nữa. Điều kiện đầu tiên của 1 key phải là tính duy nhất. Tổ chức dữ liệu của bạn có vấn đề rồi. Như mình đã nói, quan trọng là thuật toán chứ không phải ngôn ngữ lập trình. Bạn đã xây dựng thuật toán thế nào chưa? Ý tưởng thì mình vẫn thế,chủ yếu bạn select thế nào thôi.
Thân.
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Xin trợ giúp câu lệnh tự động lên lớp khi giới hạn thời gian truongtrungviet 2 13 22 Phút trước
Bài mới nhất: truongtrungviet
  Hướng Dẫn Giúp sửa đổi thành forms tìm kiếm nhiều tiêu chí xndt 6 305 15-05-17, 02:52 PM
Bài mới nhất: xndt
  [Help] Lấy dữ liệu từ bảng lên subfrom theo yêu câu.và ngược lại. HoangManh 14 622 14-04-17, 01:14 PM
Bài mới nhất: tranthanhan1962
  [Hỏi] Gửi Email bằng OutLook Godspear 4 310 23-03-17, 07:35 PM
Bài mới nhất: ongke0711
  [Hỏi] Cách chia nhỏ CSDL Minh Tiên 12 1,139 21-03-17, 06:38 PM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ