\n"); fclose($f); } function unicode_urldecode($url) { preg_match_all('/%u([[:alnum:]]{4})/', $url, $a); foreach ($a[1] as $uniord) { $utf = '&#x' . $uniord . ';'; $url = str_replace('%u'.$uniord, $utf, $url); } return urldecode($url); } function refresh($offset = -30, $length = 30) { $lines = array(); $lines = file("genius.html"); //get all the valid lines $validlines = array(); $ips = array(1 => 'start'); foreach($lines as $ln) { list($guess, $name, $dt, $ip) = explode('|', $ln); // return join(', ', [$guess, $name, $dt, $ip]); if($guess<=100 && $guess >= 0 && !array_search($ip, $ips) && is_numeric($guess)) $validlines[] = $ln; $ips[] = $ip; } // return the last 30 lines $lns = array_slice($validlines, $offset, $length); $guesses = array(); $n = 0; $total = 0; $return = ''; foreach($lns as $ln) { list($guess, $name, $dt, $ip) = explode('|', $ln); $guesses[] = array( 'guess' => $guess, 'name' => urldecode($name), 'dt' => $dt, 'ip' => $ip); $n = $n + 1; $total = $total + $guess; $return .= ""; } $final = ($total*2/3/(0.0001+$n)); $return .= ""; $currentmin = 100; foreach($guesses as $guess) { $diff = abs($guess['guess'] - $final); if($diff<$currentmin) { $currentmin = $diff; $currentwinner = $guess['name']; $currentwinningguess = $guess['guess']; } } $return .= "
" . unicode_urldecode($name) . ":$guess$dt
Average: " . ($total/(0.00001 + $n)) . "
2/3 of Average: $final
Winner: $currentwinner
Winning Guess: $currentwinningguess
"; return $return; } $sajax_request_type = "GET"; sajax_init(); sajax_export("add_line", "refresh"); sajax_handle_client_request(); if($_GET['action'] == 'result') { ?> 《世界不是天才创造的》提及的游戏的完整的结果 « 世界不是天才创造的

《世界不是天才创造的》提及的游戏的完整的结果

前天写了一篇文章《世界不是天才创造的》, 介绍了一个老华带我们做的猜数游戏。很多人参与这个游戏。而参与人数越多, 越有可能接近这个世界的真实情况。我很高兴能把其中的一部分结果公布在这里,让大家可以看到这个游戏的全貌。不做过多评论,大家自己来看吧。

最近的100个人的结果

最近的100个人的结果

最近的100个人的结果

注:这个程序的原则,目的是尽量模仿真实的游戏场景:

// remote scripting library // (c) copyright 2005 modernmethod, inc var sajax_debug_mode = false; var sajax_request_type = "GET"; function sajax_debug(text) { if (sajax_debug_mode) alert("RSD: " + text) } function sajax_init_object() { sajax_debug("sajax_init_object() called..") var A; try { A=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { A=new ActiveXObject("Microsoft.XMLHTTP"); } catch (oc) { A=null; } } if(!A && typeof XMLHttpRequest != "undefined") A = new XMLHttpRequest(); if (!A) sajax_debug("Could not create connection object."); return A; } function sajax_do_call(func_name, args) { var i, x, n; var uri; var post_data; uri = "http://home.wangjianshuo.com/scripts/php/genius.php"; if (sajax_request_type == "GET") { if (uri.indexOf("?") == -1) uri = uri + "?rs=" + escape(func_name); else uri = uri + "&rs=" + escape(func_name); for (i = 0; i < args.length-1; i++) uri = uri + "&rsargs[]=" + escape(args[i]); uri = uri + "&rsrnd=" + new Date().getTime(); post_data = null; } else { post_data = "rs=" + escape(func_name); for (i = 0; i < args.length-1; i++) post_data = post_data + "&rsargs[]=" + escape(args[i]); } x = sajax_init_object(); x.open(sajax_request_type, uri, true); if (sajax_request_type == "POST") { x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1"); x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); } x.onreadystatechange = function() { if (x.readyState != 4) return; sajax_debug("received " + x.responseText); var status; var data; status = x.responseText.charAt(0); data = x.responseText.substring(2); if (status == "-") alert("Error: " + data); else args[args.length-1](data); } x.send(post_data); sajax_debug(func_name + " uri = " + uri + "/post = " + post_data); sajax_debug(func_name + " waiting.."); delete x; } // wrapper for add_line function x_add_line() { sajax_do_call("add_line", x_add_line.arguments); } // wrapper for refresh function x_refresh() { sajax_do_call("refresh", x_refresh.arguments); } var check_n = 0; function refresh_cb(new_data) { document.getElementById("wall").innerHTML = unescape(new_data); document.getElementById("status").innerHTML = "...."; //setTimeout("refresh()", 120000); } function refresh() { document.getElementById("status").innerHTML = "..."; x_refresh(refresh_cb); } function add_cb() { // we don't care.. } function add() { var line; var handle; handle = document.getElementById("handle").value; line = document.getElementById("line").value; if (line == "") return; x_add_line(line + "|" + handle, add_cb); document.getElementById("line").value = ""; document.f.style.display = "none"; document.getElementById("ok").style.display = 'block'; }