Jump to content

woefuwabit

Full Members
  • Posts

    81
  • Joined

  • Last visited

woefuwabit's Achievements

(3/13)

4

Reputation

  1. We can now, and it's called HTML5. Not completely secure, but definitely moreso than Flash. You can save stuff using using the HTML5 File API. And you can run the GIB engine locally by compiling it using clang and emscripten into asm.js, probably leveraging on HTML5 Web Workers too
  2. Are you suggesting that my preferred treatment is inferior just because I did not read read the articles and the book?
  3. I would say that Axxx x xxx AKxxx is too strong a hand for a FJS. With this hand I would bid 2♣ GF. The way I play it, FJS shows a hand that is below a Limit Raise in HCP, but equivalent in playing strength. Most of the time it would be a 54 hand with 8 LTC, and less than 10 HCP. So this hand qualifies: Axxx x xxx Kxxxx Without a FJS, you will have to choose between making a mixed raise or normal raise which would be an underbid. If you choose to make a limit raise instead, you show the true playing value of your hand, but your partner is likely to make a wrong decision if he/she has to 1) decide on a game, 2) decide to attempt a slam, 3) decide to make a penalty double Now take a look back at the opener hand that you mentioned earlier: KQxxx xxx Ax QJx This hand would generally not accept a generic limit raise invite, nor make a game try over a normal or mixed raise. However over a 3♣ FJS invite, it would be an easy accept and an easily made game. Now imagine if you make a limit raise and opener has KQJxx AQJ AQxx x You'd be lucky to stop in 5♠, which may not even make. With a FJS opener knows to avoid slam.
  4. I play mostly against advanced+, and mostly IRL, hardly playing online anymore, so I'm going to just ignore your uncalled for ad hominem attack. The thing you have conveniently ignored, is that after a 1M-2M raise, you are still allowed to bid 3M if the 4th hand opponent suddenly choose to compete into 3m, in which case you are no worse off than if you had made a 3rd level mixed raise. Now, occasionally your opponent would decide that his/her holding is not worth a risk competing into 3m (especially against a 2M raise which could well have only 3 card support), and that is where normal raises win. With Drury, the re-invite over a LR is necessary because opener's minimum opening range has been much reduced (often 8 LTC instead of 7 LTC), and can also be a 4 card opening. In normal cases, a LR is not required. In fact, I think a game try is more necessary after a mixed raise than a limit raise, since a LR will generally have 8 LTC whereas a mixed raise have 9-10 LTC. I've often questioned why Reverse Bergen (which allows for game tries over LR but not for MR) seem to be more popular than standard Bergen (which allows for game tries over MR but not LR). If I wanted to, yes, it's not too hard to design a sytem which combines any two of the raise structures (WJS, FJS, Mini splinter, Bergen Raises), if we don't mind messing the Jacoby 2NT up a little when you have to bid 1♠-3♣. I'm in between regular partners atm though, so would rather KISS. I played Moscito with my last regular partner, so it didn't really matter. I'm definitely not advocating Hardy Raises, just his views on mixed raises. I've looked through the convention cards of most of the pairs playing in the knockouts of the 2011 Bermuda Bowl. Naturally, there is no consensus of what is the prefered raise structure, but I didn't see anyone using Bergen Raises. Some pairs do use Mixed Raises - most of them as 1M-3M instead of 1M-3m, and some pairs do play FSJ. Some even play both MR and FSJ, making 2NT LR+. Many pairs don't even mention a raise structure that they use - I presume they play WJS in this case.
  5. I played Bergen Raises for a couple of years and from my experience, the preempt value is overrated. The problem is especially bad with the mixed raise. It has given me many bad results when 2M makes while 3M goes down (which is very likely with a standard 9 LTC mixed raise opposite a 7 LTC minimum opener). Yes the opponents do have a makeable 3m partscore, but more likely than not if the opponents are unable to make a 2nd hand overcall, they will not be able to find the fit after a simple 1M-P-2M raise. AND even if 4th hand has a 6 card minor suit and bids it at the 3rd level after 2M, you can simply compete to 3M and you are no worse off than the pairs playing Bergen Raises. The mixed raise is a huge leak, no doubt about that. Also, standard 1M-2M raises can make more accurate game tries than after a Bergen mixed raise. The 1M-3M weak raise does win occasionally, and wins big if opponents have a game in the other major. This doesn't happen very often, and is balanced out by one problem I've encountered several times with the weak raise - occasionally (unless you play a strong club opening) opener will have a huge 1M holding that would go to game (or even slam) opposite the maximum of the 0-6 weak raise. How on earth is opener to make an informed decision opposite 0-6? Being able to make a game try over a limit raise... somehow I don't think anyone is going to lose sleep over not having this bid. 3 card LRs are bid 1M-1NT-2x-3M, how do you stop in 2M? Opportunities for Fit Jump Shifts don't come very often, but when they do happen I can be confident that the bid has given me an advantage. I can't say the same after making a Bergen Raise (especially mixed raise) where I will wonder if I'm already looking at a bad score. If you like you can check out http://www.amazon.com/Problems-With-Major-Suit-Raises/dp/B002RXTVNU where Max Hardy goes into a lot more details ripping into the mixed Bergen Raise. He does like the weak raise though, and it works well with the rest of his Hardy Raises structure that he advocates in his book.
  6. When choosing what to do with Jump Shifts over a Major opening, I decided that the most important factor to me is: Does this particular system allow me to show hands that cannot be shown in another way, and is it actually useful to be able to show this kind of hand? So let's look at the options. Strong Jump Shift - Make a 2/1 bid Very Weak Jump Shift - 1M is likely to play better Weak Jump Shift - Forcing 1NT may even allow you to stop in 2m Bergen Raises - Doesn't really offer more over normal raises of 2M or 3M, especially when major is ♠ So this leaves my favourite choice - Fit Showing Jumps (although a case can be made for mini splinters), showing a hand below limit raise strength, but with 9+ cards in the 2 suits and 8 LTC. This type of hand cannot be shown with any of the other systems, and gives the right type of information for opener to be able to make an informed decision to stop, play in a game or attempt for a slam.
  7. I made a simple js app to generate the scales for any number of boards: http://woefulwabbit.com/wbf-vp/ If I'm not wrong the standard deviation can be calculated as http://i.imgur.com/g3QcD.gif which comes round to ~.289 which seems to agree with your estimation.
  8. If 2!D promises 6!Ds or 5!Ds + 4M, how would you respond to opening 1!C with 1354 or 3154?
  9. Part of risk assessment is determining the cost of mitigating the risk. Here, the cost is next to zero. Just applying a few simple changes, rebuild, deploy. The risk is very real though, and the BBO deal generator is vulnerable to the attack I have described earlier. It doesn't require a genius or a lot of resource to perform the attack. With the first generated deal of the session, one can determine the seed in a matter of minutes (or instantaneously if the approximate server start time is known), allowing future deals to be predicted. With an early (not first) deal it would take longer to find the seed, but it is within practical time. Since 2000, all hands randomly generated for tournaments and club games using the Duplimate dealer adhere to these 3 requirements. 1. The generator must be able to deal all 53,644,737,765,488,792,839,237,440,000 possible bridge hands 2. The generator must be able to deal all the above hands with the exact same probability 3. It must be impossible to predict deals even after knowing all the deals in the session The BBO deal generator fails all 3 requirements.
  10. Well, what BigDeal uses is a http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator so it is also considered a PRNG, just not one of the commonly used types that are not secure. The common non-secure PRNGs used (LCG, LFG, MT) can have their states easily determined from the values that they generate.
  11. The program to do the prediction probably isn't worth much. I could write it for free as proof of concept, but as I've described it in my last post, it is so trivial there's no need for a proof of concept. The hardest part about it is determining when the server is restarted and trying to obtain the earliest deal as possible that was generated after the server comes up. The original version of BigDeal uses 160-bit pure random speed. In the original DOS version, this is obtained by collecting entropy from asking the operator to enter random stuff on the keyboard. In the Windows version, entropy is collected by asking the operator to move the mouse around. The Duplimate version also collects entropy from the speed of the Duplimate operators. Since most of these programs are expected to run on Windows these days, they don't have access to /dev/urandom The deals are then generated not by PRNG, but by applying a cryptographical hash on the the seed appended with a counter. Original version of BigDeal uses RIPEND-160 which returns a 160bit value, which is truncated down to 96 and mapped to particular hand. Of course, occasionally the value is higher than ~5.36e28 so that value is dropped and it looks for the next counter value. Now, BigDeal recommends that instead of generating a new seed in between sessions (which can be time consuming), the seed is reused and the counter value is stored for the next session. This works great, of course, if the seed is not leaked, but of course would not work in the case you mentioned where the seed is to be published. I'm not sure if BigDeal has been updated since 12 years ago, I would think it would be a good idea these days to use more entropy bits together with a more modern cryptographical hash such as SHA-2 or SHA-3. So ideally the hand record would also include a link to the source code of the generator used... especially since I know of two different methods to map values to hands (Anderson's and Pavlicek's).
  12. The attack against LCG probably won't be usable against LFG, but the characteristics of LFG leads to other forms of attack. If you can recover the seed value, then you will only need to generate up to maybe the first 1 million possible deals. The seed can be recovered by brute-force, all you need is a complete deal, ideally one that was generated as early as possible after the system has been seeded which will allow you to recover the seed faster. This can be made even faster if seeding is done the common way - using time, in which case you can narrow down the search space if you know approximately when the server was restarted.
  13. I'm fairly sure tournaments "that matter" since 2000 (when the paper I linked to was released) have been doing it 'the right way'. It was used in the 2000 World Bridge Olympics in Maastrict. They were dealt using Big Deal (the reference implementation) and imported into the Duplimate. The Duplimate dealing software has since been updated to use Big Deal's algorithm too, and most tournaments should at least be using that as the deal generator.
  14. I've looked at the glibc source code, and the state is stored in a global variable, not TLS. Also, I've found out that while the LCG code is still in glibc, the latest version now defaults to what looks like a Lagged Fibonacci Generator instead, with j=3 and k=31. I think the theoretical max period is under 2^62. Also, unlike LCG, different seeds should produce a different set of numbers.
  15. It doesn't matter. Because the LCG has 2^31 possible states when you start the generation, there can only be a maximum of 2^31 possible hands generated. Reseeding the LCG will only change the state from one of the 2^31 possible states to another of the 2^31 possible states. The maximum number of different hands that BBO can generate is 2^31, no matter how much entropy you try to introduce to it. I actually underestimated the seriousness of the attack in my previous calculation: There are 52c13 = 52!/(13! * 39!) = 6.35e11 possible 13 card hands BBO can deal 2^31 = 2.15e9 possible hands That means your 13 card starting hand is enough to determine the distribution of all the remaining 3 hands, 295 out of 296 times. (Not determine ~296 possible distributions as I previously miscalculated) Of course, if rand() is called by another thread while we are in the middle of generating a hand, this will throw off the attack. I don't expect this to happen a lot though unless rand() is called by another thread very frequently. Also not certain if the other rand() calls happen in a different thread.
×
×
  • Create New...