Đá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
  [Help] Cập nhật combobox 2 từ combobox 1 (dữ liệu ở nhiều bảng) votinh.tq 6 199 22-11-16, 11:34 PM
Bài mới nhất: votinh.tq
  [Help] Chỉnh giúp Form thống kê hoanghai902 2 124 28-10-16, 06:15 PM
Bài mới nhất: hoanghai902
  Xin giúp tạo 1 trường trong table đánh số tự động thay cho autonumber trungminh 7 448 16-09-16, 05:17 PM
Bài mới nhất: maidinhdan
  Giúp đỡ về form với trungminh 9 491 10-09-16, 09:17 PM
Bài mới nhất: trungminh
Lightbulb Hướng Dẫn Tạo form tìm kiếm theo nhiều tiêu chí khác nhau khanhduycsgt 18 8,674 04-08-16, 10:29 PM
Bài mới nhất: huuduy.duy

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ơ