Forum dédié aux énigmes et à toutes formes de jeux de logique. | Déconnexion |
Tu n'es pas identifié sur Prise2tete : s'identifier. ![]() ![]() |
![]() |
#26 - 17-06-2020 09:56:26
bzghin sayLol, je ne m'en sors pas ! Et pour cause, je pense que ton argument démontre que c'est impossible. #0 Pub#27 - 17-06-2020 10:16:52
Begihn SayCe qu'il faut calculer, c'est f(a,b) = a/(a+b) f(a-1, b+1) + b/(a+b) f(a, b-1) #28 - 17-06-2020 10:52:35
Bgehin SayOu pas. A mon sens il faut connaitre pour chaque quantité Q de sucre (Q entre 0 et N, avec un pas de un demi sucre) la probabilité d'avoir X demis sucres (X compris entre 0 et 2Q). Code:double sucre(long sucres) { long halves = sucres<<1; halves ++; double *prob = malloc(halves * sizeof(double) << 1); int current = 0; int previous = halves; for(int i=0; i< halves; i++) prob[i] =prob[previous+i] = 0; prob[0] = 1; for(int total = halves - 2; total >= 2; total--) { current = previous; previous = halves - previous; prob[current] = prob[previous+1] * 2 / (total + 2); for(int i=1; i<= total; i++) prob[current+i] = prob[previous+i+1] * 2 * (i+1) /(total + 2 + i) + prob[previous+i-1] * (total - i + 2) / (total + i); } double res = prob[current+2]; free(prob); return res; } Désolé, c'est tout crade dans un seul tableau mais c'est pour éviter de faire des allocations à tout bout de champ, tout en restant en mémoire dans du 2N et pas du N² #29 - 17-06-2020 18:48:00
neghin sayBon, voici le fruit de ma réflexion :
Et le programme en question :
Si le calcul de la proportion se rapproche bien de la probabilité de tirage comme je le pense, alors ce programme permet de gagner du temps de calcul, même si le résultat n'est pas exact... #30 - 17-06-2020 19:42:21
Beghni SayQuand je donnais des formations SQL, à la question "qu'est-ce qu'une bonne requête SQL ?" les gens répondaient : une requete qui renvoie le bon résultat. Code:double fastPow(double a, long b) { double res = 1; double c = a; for(long i = b; i; i>>=1) { if(i&1) res *= c; c *= c; } return res; } double sucre(long sucres) { double res = 0; double limit = 10000; double step = 0.001; for(double i=0; i<limit; i += step) { res += exp(-i) * fastPow(1 - (1+i)*exp(-i), sucres-1); } return 1 - res * sucres * step; } 10^1: 0.761443 #31 - 17-06-2020 20:19:48
Beghin SyLol, OK, on ne joue pas dans la même cour ! #32 - 17-06-2020 20:28:27
Begihn SayC'est du C - après ça change pas des masses C ou Python, ça reste possible de faire pareil #33 - 18-06-2020 08:02:44
bzghin sayPour info mon programme n'est au final pas vraiment linéaire (ou pas vraiment précis, au choix, après 10^15) : le calcul de l'intégrale nécessite beaucoup plus de pas pour être précis. #34 - 18-06-2020 14:10:12
Begghin SayVoilà voilà j'ai eu le temps de mettre au propre la formule "directe" telle qu'exposée par un des membres du site voisin #35 - 18-06-2020 15:28:17
eghin SayEffectivement c'est plus simple comme expression #36 - 22-06-2020 10:03:05
beghun sayJ'ai amélioré mon code qui sort des fractions (en trouvant un dénominateur commun pour un nombre de sucre initial donné, ce qui réduit le temps passé en PGCD) Code:75729070212884959962179462170111532945438181515983 56400623675554364260487008314254187178529217176107 62866726439769744990259525916382356751993590319655 76155880211056561927127524949190200177605828829960 83262296685860706423358223810981691821199589390661 39581256425225073595339295014991334054749986409388 88774745053198894405530874848257273532166399170966 12439829773800121502960144309732186526838487724183 16937712119207405363226070152938111078676408315155 69321532152177103557599369071309938705721856388957 01514471453879933579866926298137070671049315217540 53358140839685343571018235284463329082730815803854 22081027324781768636522033824586906759851971271465 93428140029264979316002387404572372370173457430015 97644667086055826769243243384497756642369948373578 15313865357019363155428830314168184606249451225949 84869142819624884417758631825045227866439579020648 14488872042604228586287134879539228594047079750192 95013190463409086581676623307415010409474721517471 40058329223569817032685030812805112114303652979558 03985811894986756112661936809822011902186863394098 96347166501186782727455802228332949602015264853402 48166207374375217111402536130703143606017370100839 98826839707892664613132570595134284703780327608947 56179780951707552772735798028192793688193587928073 91397455896524145937476374226202803425610162203926 43772423890718396662100085035457149523770636979659 85050534998166585161348747999581081620432302300035 47802577483138515653326994535145118360189237682181 00447634665747209002319005883078458867156457373122 10304036757716910563240300884124825088949464451033 89864764604127669028787605537638776530791690826855 46802971498358838562222190111634167551502675365903 14284353584033580617678254163127010889647112044666 19915940867323075146397337871705926943816104822505 85839302511291200768429208783827919527468102816912 45655437771397623229376855190788725046387710543101 64357088497241349753562666643849858476419286153680 95566260387722529372942865382381378423407931386877 07342772135384767372503029243984151914923885610410 28667046506119968348426524523913332302858687148339 87420901162968292767158877405212362160039716998708 56648732189805250717726590617182598168646179217389 51286150525481869567973285816388578409805770929561 86860215560402629072715357558667592965617216685298 67575548965576261485081811237438472968202778715518 20414494025497291786522656062964095800593374132919 49669429501461997905508459516371375131532325353042 50243840186152189346732011777604428149566868548832 30377096722672526555872513031317689714802493746024 82609883302204579755278121075697322959096090992410 90955436524151195187215356825628884408534015732017 81809869079785585031768466569831396227204654414299 24744685968626295122489072437291043258939619574515 73644379410917595057871451206943885762721350661296 25982236432897870270448643818054259794987116932359 20193604915700856047178925681814842191791494990559 11270455819270130397841631308090800112067009539623 62800202144703795504266177036933465597203845573793 57794645955940890031275168734113270379683098208273 43388180251085482577091484152665330925121026143644 64851389102077849291663919379099722866768597843436 60493492732799103015090568713177172389528466555025 426856478722974426105119443572851211511 / 88280843877444733117663241707652036866445127746206 90314467784357313584344535592841198669525676630616 13796154061887683764466343426961721415207145416647 29955252367774385234521415503292087791795080376663 08547527967688629259839227074743489662805350482854 70411758135388243201070668072833103480371923281254 82852704351906719538114065337878814246234482367899 70551853776210195918388588237221650549061269765604 99345478716690639731609540005601026806185691793301 42236433049485311276673227388396547049960291356278 53424659279932248489899963710129989881436738107722 92576419651348294210100501807208853583902908613392 26062477462249924216666150637342188464686891282445 34786109276107470846288789283973243133562713890987 66941765562192101881340932211398740446698239896090 31909899876150763872410527357140622268761624655129 90628594846202106731203085345658194098510576502813 23567588497440869684075904086523387944061736729872 74319513354926867183750938589905552833980391153620 69450192836968559754766755272069893776725972036382 55090944996689497652004331813452211029150922758602 97723027695187404851192201650244353877902804964465 87677786768166528510644497265169325820482485396128 74836768615040117316425094867702197065721743407339 13489687760159228601542582647989687226858149918120 59779994615157460278898485733820400135407287992706 11727188456776624382072523497594141532429960573821 12126250783611276060824092539049707301115035600194 88708225589965795512498993060337348722401336080842 59118299420162206351178397042443110648845135645556 39807535356937755154055079670621341403869768764656 88419226943583313576358078052237409036283795764391 21321308283763287510312992537093046418982076661684 24796069575492907585160040273224341696095646948600 18414286441677252244074339208452939154209609251674 93421848528514884199445119185982723406465947848923 15184352929940725419966939645845198770948697634783 91724482811568876679707560582404095301060027448236 39452098640503170853131346727101982249790617144600 38426575079001414798064023810705400545488281560029 93315721262517580726092223520619531861511904718244 38591052514933143222073785871792166650536713556047 61417809596445016499130170025433612401683703513701 26894164122067306628180276545210523665153571113458 96514303823772070017837607937057756743020391411152 81362087166022455496595626769503002545202060793011 05531279184688882087306758840102729838847935680231 07877640131161848227916214098593360827452154549853 02929247157970466833534762998917887786939025516206 02830805954747057983599746862762016358309863646251 03397933433210265971999526501128446806874501316955 23420495432601760244543465205166306963206593817369 33786460294927933310505216337403862698744021147308 31449982227011101796697945138476220397449315821451 96255420328168907237760919967207992681213419138974 27385573100060112388072006123104864646759868568433 70524463470750711671092737422312615772049189518210 19634778841999663796952274570913352393504527168790 86865985685253427652871457039777392799591485265128 85638946472336285130529136829688158155673310250158 98619762442240000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000 #37 - 22-06-2020 15:54:00#38 - 22-06-2020 20:32:53Réponse rapideSujets similaires
|
![]() | ||||||||||||||||||||||||||||||
Prise2Tete Forum Statistiques Liste des membres Hall of Fame Contact |