Saya bertanya-tanya apakah ada yang tahu apakah ada cara untuk menggunakan fungsi RANDBETWEEN untuk menghasilkan serangkaian angka acak di Excel tetapi juga membuat angka-angka acak keluar sama dengan rata-rata yang ditentukan. Saya akan menggunakan ini untuk mengisi lembar harga, jadi misalnya, jika saya menggunakan RANDBETWEEN untuk mengisi 100 baris dan saya perlu rata-rata menjadi $ 50. Saya tahu bahwa saya bisa mengisi baris dengan menggunakan RANDBETWEEN (25,75) dan seret melalui 100 baris tetapi tidak harus keluar dengan harga rata-rata yang saya butuhkan. Adakah yang tahu kalau ini memungkinkan untuk diamandemen memungkinkan saya menetapkan rata-rata itu? terima kasih atas bantuannya
3
Jawaban:
Pertimbangkan lotre di mana sponsor menjual banyak tiket (misalkan 100), memasukkannya ke dalam wadah (sebut saja topi), dan kemudian secara acak memilih tiket dari topi untuk memutuskan siapa yang memenangkan hadiah. Sekarang anggaplah ada beberapa hadiah; sponsor menarik pemenang hadiah pertama, lalu yang kedua, dan yang ketiga. Tentu saja, tiket yang menang tidak dimasukkan kembali ke dalam topi setelah ditarik, karena itu akan memungkinkan mereka untuk dipilih lagi, menghasilkan satu tiket yang memenangkan lebih dari satu hadiah, yang melanggar aturan. Oleh karena itu, semua pilihan setelah yang pertama dibatasi . Dalam arti tertentu, permainan ini dicurangi, sehingga pemenang berikutnya hanya bisa datang dari kumpulan non-pemenang, sebagai mekanisme untuk mencapai tujuan tidak memberikan beberapa hadiah untuk tiket tunggal apa pun.
Sekarang anggaplah ada 100 hadiah - semua orang memenangkan sesuatu. Pada saat tiket terakhir ditarik keluar dari topi, hanya ada satu tiket di sana. Seleksi dibatasi sampai titik yang ditentukan sebelumnya. Dan Anda tahu siapa pemenang ke-100 - orang sedih yang berdiri di tengah orang banyak, menunggu namanya dipanggil; yang bukan pemenang yang tersisa.
Masalah Anda dapat diselesaikan dengan strategi serupa:
Dan logika untuk membatasi distribusi probabilitas adalah sederhana: jangan menghasilkan (dan memasukkan ke dalam lembar penetapan harga) angka apa pun yang membuatnya tidak mungkin untuk mencapai tujuan.
Saya merasa lebih mudah untuk memikirkan tujuan sebagai mencapai total yang ditentukan daripada rata - rata tertentu . Tentu saja ini setara secara logis. Misalnya, anggap Anda hanya menginginkan 4 angka daripada 100. Anda ingin rata-rata menjadi 50, sehingga totalnya harus 4 × 50 = 200. Katakanlah Anda menghasilkan dua angka pertama, v 1 = 68 dan v 2 = 70. Ini menambahkan hingga 138, jadi v 3 + v 4 harus 62. Jika v 3 adalah 50, maka v 4 harus menjadi 12, yang berada di luar kisaran 25-75 yang valid. Memecahkan 68 + 70 + v 3 + 25 = 200 hasil v3 = 200− (68 + 70 + 25) = 37, jadi kami membatasi v 3 untuk berada di antara 25 dan 37. Setelah v 3 dipilih, v 4 ditentukan; itu harus 62− v 3 ; yaitu, 200− ( v 1 + v 2 + v 3 ). Ini analog dengan situasi dengan tiket lotre ke-100; itu harus menjadi apa yang tersisa setelah pilihan pertama n −1 dibuat.
Ini kedengarannya seperti pekerjaan untuk VBA, tapi saya menemukan solusi lembar kerja-formula. Berikut ini, saya telah memilih untuk membuat batas-batas parameter distribusi probabilitas yang diinginkan (25 dan 75); yaitu, menempatkan mereka dalam sel-sel individual (
A1
danB1
) daripada mengkodekan mereka ke dalam formula. Dan saya menggunakan beberapa kolom pembantu.C1
ke jumlah angka yang diinginkan. Anda bisa memasukkan nilai konstan, atau menghitungnya sebagai average_number × number_of_number , yaitu=AVERAGE(A1, B1) * 100
,.C2
ke=C$1-SUM(G$1:G1)
.D1
ke=100-ROW()
.E1
ke=MAX(C1-D1*B$1, A$1)
.F1
ke=MIN(C1-D1*A$1, B$1)
.G1
ke=RANDBETWEEN(E1, F1)
.C2
,D1
,E1
,F1
, danG1
turun ke Row 100.Diskusi:
Misalkan n menjadi 100, jumlah angka acak, dan karenanya jumlah baris. Berikut ini adalah implementasi umum untuk contoh empat baris yang saya berikan sebelumnya.
Untuk setiap Baris i (1 ≤ i ≤ n ),
Gi
adalah v i , angka acak ke- i .Ei
dan adalah batas bawah dan atas dari kisaran yang dipilih (seperti yang terlihat jelas dari rumus untuk ).Fi
Gi
Gi
Di
menghitung mundur dari n −1 di Baris 1 ke 0 di Baris n ; yaitu, ia memberikan jumlah baris di bawah yang sekarang. Jika Anda memulai baris selain 1, sesuaikan rumus ini sesuai.C1
adalah v 1 + v 2 + ... + v n − 1 + v n = - ( v 1 + v 2 + ... + v i − 2 + v i − 1 ), yang sama dengan (nilai sasaran untuk) v i + v i + 1 + ... + v n − 1 + v nCi
C1
D1*A$1
→ × adalah nilai valid minimum untuk v i + 1 + v i + 2 +… + v n − 1 + v n Jadi ( - × ) adalah batas atas untuk v i agar dimungkinkan mencapai total tujuan.Di
A1
C1-D1*A$1
Ci
Di
A1
Mari kita kembali contoh empat baris. Jika (hipotetis) v 1 adalah 126, tidak mungkin untuk mencapai tujuan v 1 + v 2 + v 3 + v 4 = 200 karena kendala yang v 2 , v 3 , dan v 4 menjadi ≥ 25. Tapi jika v 1 adalah 125, akan ada kemungkinan untuk mencapai tujuan dengan v 2 = v 3 = v 4 = 25. Jadi 125 merupakan batas atas untuk v 1 . Tetapi, tentu saja, ay1 juga harus ≤ 75; batas 125 adalah moot. Nilai v harus memenuhi kedua set kendala (baik kisaran 25-75 dan kendala yang diperlukan untuk mencapai total n × 50), sehingga mereka harus memenuhi ketat dari kedua batas di setiap sisi (atas dan bawah).
Jadiadalah batas atas untuk v i .
Fi
Ei
Berikut adalah snapshot dari apa yang saya dapatkan dengan n = 10:
Tentu saja, menekan F9menyebabkan Excel menghitung ulang lembar dan menghasilkan set angka acak baru. Tapi
G1:G10
selalu tambahkan hingga 500; yaitu rata-rata adalah 50.Ini pertanyaan yang menarik.
Jika n adalah 2, v 1 dipilih secara acak, maka v 2 diatur ke 100− v 1 . Jelas v 2 tidak terlepas dari v 1 . Tapi
Jadi v 2 terdistribusi secara seragam pada kisaran 25-75, sama dengan v 1 .
Saya mengalami kesulitan melakukan matematika untuk pertanyaan ini untuk n > 2. Jadi saya melakukan percobaan empiris. Saya menghasilkan 100 angka acak antara 25 dan 75, dan saya menghitung ulang 250 kali, mengumpulkan hasilnya. Kemudian saya memetakan distribusi frekuensi untuk beberapa nilai v :
(Gambar adalah tautan ke versi ukuran penuh dari mereka sendiri.)
Hingga v 91 , distro terlihat cukup seragam:
Tetapi, mulai dari v 92 , sesuatu yang menarik mulai terjadi:
Perhatikan bahwa saya harus mengubah skala pada v 94 dan seterusnya:
Sepertinya beberapa nilai v terakhir memiliki distribusi yang tidak seragam. Saya menduga bahwa, ketika n semakin besar, semakin besar kemungkinan bahwa nilai pertama n −10 (atau lebih) akan menjauh dari rata-rata yang diinginkan, memaksa beberapa nilai terakhir ke angka ekstrim di ujung rentang, dalam rangka untuk membawa rata-rata kembali ke jalurnya. Tetapi, setidaknya, semua nilai harus memiliki distribusi simetris.
Jika Anda tertarik untuk mengejar masalah ini, Anda mungkin ingin menanyakannya di Math Stack Exchange - mereka makan pertanyaan seperti ini untuk sarapan.
sumber
Secara teori tidak mungkin untuk membuat daftar acak (atau bahkan pseudo-acak) dengan rata-rata tetap karena ini mensyaratkan bahwa nilai-nilai nanti tergantung pada nilai-nilai sebelumnya dan bahkan dapat memaksa Anda untuk kembali dan mengubah beberapa nilai sebelumnya dalam beberapa kasus.
sumber
Seperti yang dijelaskan Catherine, tidak ada fungsi bawaan seperti itu. Setelah Anda membuat data acak, Anda harus kembali dan mengubah data sedikit. Jadi tugas bisa dilakukan dengan VBA atau bahasa pemrograman lain.
Berikut ini adalah solusi VBA. Yang dilakukannya hanyalah:
Opsi 1: Unduh solusi yang berfungsi
PERINGATAN: Menjalankan makro yang Anda unduh di mana saja di internet tanpa mengetahui VBA dapat membahayakan PC Anda. Itu sebabnya ada opsi kedua.
Solusi yang berfungsi dapat diunduh di sini . Dibuat di Excel 2013, jadi harus dijalankan ok di Excel 2010 dan yang lebih baru. Setelah membuka file harus ada dua popup keamanan oleh Microsoft: popup1 , popup2 . Anda harus menerimanya. Menjalankan sangat sederhana: cukup klik tombol ...
Opsi 2: Untuk menginstal makro
Buka Excel -> Alt + F11 -> Sisipkan -> Modul -> rekatkan kode berikut -> Ctrl + S -> dan pilih 'Excel Work-Enabled Workbook (* .xlsm)' dari daftar drop-down
Untuk menjalankan makro:
Anda juga dapat membuat tombol di lembar kerja dan menetapkan makro untuknya - ini lebih ramah pengguna dan Anda tidak perlu memeriksa bahwa Anda berada di lembar kerja yang benar.
sumber