مقدمة
الآن التطبيقات تنبثق فقط بعد هطول الأمطار ، وتتخذه. يريد كل شيء من ذوي الخبرة ، عديمي الخبرة ، المؤهلين ، وغير المؤهلين ، بدء عمل تجاري. يحتاج أكثر من 90 ٪ من رواد الأعمال إلى إنشاء تطبيق ، والذي يبدو أنه أصبح التكوين القياسي لريادة الأعمال.
بمجرد إنشاء تطبيق ، عليك الترويج له. كيفية الترويج لها؟ إرسال القسائم هو الشيء الأكثر لا غنى عنه. الآن تتطلب العديد من المنتجات أو العمليات أن يتم إصدار كبار القسائم بشكل عشوائي ، ولكن لا يمكن أن تكون عشوائية للغاية. هل يتم إرسال جميع القسائم؟ أموال المستثمرين ، أليس كذلك؟
لذلك ، في المبلغ الذي تم إنشاؤه عشوائيًا ، يجب أن يكون احتمال وجود كميات صغيرة أكبر ، ويجب أن يكون احتمال وجود كميات كبيرة أصغر. على سبيل المثال ، 70 ٪ من 3 يوان ، 25 ٪ من 5 يوان ، و 5 ٪ من 10 يوان. ماذا علي أن أفعل إذا قمت بإنشاء كوبونات مع هذا النوع من الاحتمال؟
بالنسبة للأسئلة المذكورة أعلاه ، لا يكفي استخدام العشوائية. مباشرة. لأن هذا العربات الزائفة غير مرجح ، فإن احتمال ظهور 3 و 5 و 10 هو نفسه.
أفكار التنفيذ
دعنا نأخذ المثال أعلاه. احتمال ظهور 3 هو 70 ٪. نقوم بتعيينه بوزن 70. احتمال ظهور 5 هو 25. نخصصه وزنًا قدره 25. إن احتمال 10 يظهر هو 5 ٪. نحن نخصصه وزن 5.
نقوم بحساب مجموع الأوزان بالترتيب ، ونستخدم القيمة قبل مجموع الأوزان التي تظهر في الرقم الحالي كقيمة نقطة البداية لنطاق الوزن الخاص بها ، ونستخدم القيمة بعد المبلغ كقيمة نقطة النهاية لنطاق الوزن.
وبهذه الطريقة ، يمكننا استخدام عشوائي.
تنفيذ جافا
package com.nggirl.test.weight.random ؛ استيراد java.util.arraylist ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.random ؛ الطبقة العامة enternit {public static void main (string) {engentrandom wengerom ( String [] {"1" ، "2" ، "3" ، "4"} ، integer جديد [] {100،100،200،600}) ؛ عشوائي r = جديد عشوائي () ؛ لـ (int i = 0 ؛ i <10 ؛ i ++) {integer rv = R.NextInt (wr.getMaxRandomValue ()) ؛ system.out.println (rv) ؛ system.out.println (wr.getElementByRandomValue (rv) .getKey () + "" + rv) ؛ 0) ؛ keycount.put ("2" ، 0) ؛ keycount.put ("3" ، 0) ؛ keycount.put ("4" ، 0) ؛ for (int i = 0 ؛ i <10000 ؛ i ++) {Integer rv = r.nextint (wr.getMaxRandomvalue () ؛ string key = wr.getElementByRandomValue (rv) .getKey () ؛ keycount.put (المفتاح ، keycount.get (مفتاح) .intvalue ()+1) ؛} system.out.println ( keys.length! = withs.length) {return ؛} weightelements = new ArrayList <Eventelement> () ؛ for (int i = 0 ؛ i <keys.length ؛ i ++) {weightelements.add (eightelement (keys [i] ، الأوزان [i])) ؛ RangeWeightElemnts () {if (eightelements.size () == 0) {return ؛} weightelement ele0 = eightelements.get (0) ؛ ele0.setTholdLow (0) ؛ ele0.setTholdHoldHight (ele0.getweight ()) ؛ لـ (int i = 1 ؛ WeightElements.get (i) ؛ preelement الأثقال = الوزن. يتم زيادة نطاق وزن العنصر بطريقة منظمة ، يمكن تغييره إلى بحث ثنائي عن (الوزن e: الوزن) {if (rv> = 0) {return null ؛} إرجاع الأوزان. وزن عدد صحيح ؛/*** الوزن يتوافق مع نطاق الأرقام العشوائية خطوط منخفضة*/عتبة عدد صحيح خاص ؛/*** الوزن يتوافق مع نطاق الأرقام العشوائية الخطوط العالية*/عتبة عدد صحيح خاص ؛ الوزن العام ؛ الوزن) {this.key = key ؛ this.weight = weight ؛} السلسلة العامة getKey () {return Key ؛} public void setkey (مفتاح السلسلة) {this.key ؛} setThResholdLow (integer thresholdlow) {this.throsholdlow = thresholdlow ؛} عدد صحيح عام getTholdHoldhigh () {therderholdh ؛} public void setThresholdHoldh (key: +هذا.نتيجة:
2 1028764 876
تنفيذ الانقسام
GetElementByRandomValue (integer rv) {if (rv <0 || rv> getMaxRandomValue () -1) {return null ؛} // في هذا الوقت ، يجب أن يكون rv في نطاق معين = 0 ، 1 ؛ int index = eightelements.size ()/2 ؛ بينما (صواب) {if (rv <weightelements.get (index) .getTholdLow ()) {end = index - 1 ؛} آخر آخر نهاية)/2 ؛}}دعنا نشارك مثالًا آخر أدناه لتعزيز فهم الخوارزميات العشوائية للوزن ، وأن نكون في مكانها في وقت واحد!
تستخدم الخوارزمية العشوائية على نطاق واسع في أنظمة مثل اليانصيب ، وجدولة الموارد ، وما إلى ذلك. إنه تطبيق عشوائي بسيط وفقًا للوزن. الوزن هو نسبة زيارات العديد من الكائنات العشوائية (مصنفة). كلما ارتفع إعداد الوزن ، أسهل الزيارات ، ومجموع الزيارات لا يساوي 100 ؛
رمز التنفيذ البسيط هو كما يلي:
استيراد java.util.arraylist ؛ import java.util.list ؛ استيراد java.util.random ؛ الطبقة العامة enterndom {قائمة ثابتة <NevaleCategory> الفئات = ArrayList جديد <EVILIONCATERATARY> ؛ WC2 = فئة الوزن الجديدة ("B" ، 20) ؛ WELVERATION WC3 = VILETECTATESTINGRY ("C" ، 20) ؛ CATERSS.ADD (WC1) ؛ CATERSS.ADD (WC2) ؛ CATESSORES.ADD (WC3) ؛} public static void main (string [] {initdata () ؛ {internsum + = wc.getweight () ؛} if (interonsum <= 0) {system.err.println ("error: internsum =" + internsum.toString ()) ؛ return ؛} integer n = random.nextint (initionsum) ؛ // n في [0 ، الأوزان) n <m +wc.getweight ()) {system.out.println ("هذه الفئة العشوائية هي" +wc.getCategory ()) ؛ break ؛} m += wc.getweight () ؛}}} class inightcategory {private string category ؛ private inte beight ({sup sup () {super () ؛ this.setCategory (الفئة) ؛ هذا.نتيجة:
لخص
ما سبق هو المحتوى الكامل لهذه المقالة حول تنفيذ خوارزمية عشوائية لوزن لغة جافا. آمل أن يكون ذلك مفيدًا للجميع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!