Skip to content
By using Twitter’s services you agree to our Cookies Use. We and our partners operate globally and use cookies, including for analytics, personalisation, and ads.

This is the legacy version of twitter.com. We will be shutting it down on June 1, 2020. Please switch to a supported browser, or disable the extension which masks your browser. You can see a list of supported browsers in our Help Center.

  • Home Home Home, current page.
  • About

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @
  • Language: English
    • Bahasa Indonesia
    • Bahasa Melayu
    • Català
    • Čeština
    • Dansk
    • Deutsch
    • English UK
    • Español
    • Filipino
    • Français
    • Hrvatski
    • Italiano
    • Magyar
    • Nederlands
    • Norsk
    • Polski
    • Português
    • Română
    • Slovenčina
    • Suomi
    • Svenska
    • Tiếng Việt
    • Türkçe
    • Ελληνικά
    • Български език
    • Русский
    • Српски
    • Українська мова
    • עִבְרִית
    • العربية
    • فارسی
    • मराठी
    • हिन्दी
    • বাংলা
    • ગુજરાતી
    • தமிழ்
    • ಕನ್ನಡ
    • ภาษาไทย
    • 한국어
    • 日本語
    • 简体中文
    • 繁體中文
  • Have an account? Log in
    Have an account?
    · Forgot password?

    New to Twitter?
    Sign up
colmmacc's profile
Colm MacCárthaigh
Colm MacCárthaigh
Colm MacCárthaigh
@colmmacc

Tweets

Colm MacCárthaigh

@colmmacc

AWS, Apache, Crypto, Irish Music, Haiku, Photography

Seattle
notesfromthesound.com
Joined April 2008

Tweets

  • © 2020 Twitter
  • About
  • Help Center
  • Terms
  • Privacy policy
  • Imprint
  • Cookies
  • Ads info
Dismiss
Previous
Next

Go to a person's profile

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @

Promote this Tweet

Block

  • Tweet with a location

    You can add location information to your Tweets, such as your city or precise location, from the web and via third-party applications. You always have the option to delete your Tweet location history. Learn more

    Your lists

    Create a new list


    Under 100 characters, optional

    Privacy

    Copy link to Tweet

    Embed this Tweet

    Embed this Video

    Add this Tweet to your website by copying the code below. Learn more

    Add this video to your website by copying the code below. Learn more

    Hmm, there was a problem reaching the server.

    By embedding Twitter content in your website or app, you are agreeing to the Twitter Developer Agreement and Developer Policy.

    Preview

    Why you're seeing this ad

    Log in to Twitter

    · Forgot password?
    Don't have an account? Sign up »

    Sign up for Twitter

    Not on Twitter? Sign up, tune into the things you care about, and get updates as they happen.

    Sign up
    Have an account? Log in »

    Two-way (sending and receiving) short codes:

    Country Code For customers of
    United States 40404 (any)
    Canada 21212 (any)
    United Kingdom 86444 Vodafone, Orange, 3, O2
    Brazil 40404 Nextel, TIM
    Haiti 40404 Digicel, Voila
    Ireland 51210 Vodafone, O2
    India 53000 Bharti Airtel, Videocon, Reliance
    Indonesia 89887 AXIS, 3, Telkomsel, Indosat, XL Axiata
    Italy 4880804 Wind
    3424486444 Vodafone
    » See SMS short codes for other countries

    Confirmation

     

    Welcome home!

    This timeline is where you’ll spend most of your time, getting instant updates about what matters to you.

    Tweets not working for you?

    Hover over the profile pic and click the Following button to unfollow any account.

    Say a lot with a little

    When you see a Tweet you love, tap the heart — it lets the person who wrote it know you shared the love.

    Spread the word

    The fastest way to share someone else’s Tweet with your followers is with a Retweet. Tap the icon to send it instantly.

    Join the conversation

    Add your thoughts about any Tweet with a Reply. Find a topic you’re passionate about, and jump right in.

    Learn the latest

    Get instant insight into what people are talking about now.

    Get more of what you love

    Follow more accounts to get instant updates about topics you care about.

    Find what's happening

    See the latest conversations about any topic instantly.

    Never miss a Moment

    Catch up instantly on the best stories happening as they unfold.

    1. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      And when you choose multiples, you usually don't want duplicates, so what you often need is a shuffle. How do you shuffle? Well you can call sort() with some kind of customer random as-me comparator. DON'T DO THIS.

      2 replies 3 retweets 28 likes
      Show this thread
    2. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      Also, DON'T LET YOUR FRIENDS DO THIS. Instead do a Fisher-Yates shuffle. They are super easy ...

      3 replies 1 retweet 51 likes
      Show this thread
    3. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      jumble = [ A , B , C, D, E, F ] for (i = 0; i < jumble.length; i++) { int r = rand(i) save = jumble[i] jumble[i] = jumble[r] jumble[r] = save It's O(N) and it works every time. Super easy to remember if you code it a few times.

      8 replies 9 retweets 147 likes
      Show this thread
    4. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      O.k. so that's shuffling, like for your playlist or whatever. But what about weighted sets and selection? What if you want to choose elements but also put a thumb on the scale?

      1 reply 2 retweets 19 likes
      Show this thread
    5. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      Well you could build a set or an array that just repeats elements in them w times, where w is the weight. Eats a lot of space though! and gets super inefficient if you don't want to have duplicates. The COOLEST answer here is to use Vose's Alias.

      1 reply 4 retweets 28 likes
      Show this thread
    6. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      Sadly, this one is too long for a tweet until next year when twitter decides that we need more space to offend one another, so for now, bookmark this page http://www.keithschwarz.com/darts-dice-coins/ … , or print it out and frame it in case the Internet ever dies. It's one of the best bits.

      2 replies 12 retweets 175 likes
      Show this thread
    7. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      You can read it for yourself, but it uses a 2d approach to do weighted selection in O(1) time with O(n) space. MAD THAT THIS WORKS. And it reminds me of something else, the last and BONUS randomness item I'll get into ...

      3 replies 3 retweets 32 likes
      Show this thread
    8. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      How do we generate numbers that honor a normal distribution?

      3 replies 0 retweets 18 likes
      Show this thread
    9. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      A normal distribution is a super common statistical distribution, it describes the distribution of lots of phenomena and the central limit theorem says that basically any distribution is secretly just one step removed from the normal distribution.

      1 reply 1 retweet 21 likes
      Show this thread
    10. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      That probably didn't make any sense. Here's a Wikipedia page that also won't make much sense: https://en.wikipedia.org/wiki/Normal_distribution … . It especially doesn't make sense that those totally differently looking lines are supposed to be "the same". That's ok though.

      1 reply 1 retweet 22 likes
      Show this thread
      Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
      • Report Tweet
      • Report NetzDG Violation

      It's ok because STATISTICS DOESN'T MAKE SENSE. They work really well, but if you think about them for too long and too deeply, you fall into a transcendent state. That's also how we know that statistics are pure science. Anyway, back to the topic ...

      9:13 AM - 29 Jun 2018
      • 20 Retweets
      • 114 Likes
      • Daivat Bhatt RideDaArc John Coleman Peter Evans Michał Turek SeanRCoughlin Chris Chelberg Clara Sacramento Dr. Lila Fontes, mosquito feast
      2 replies 20 retweets 114 likes
        1. New conversation
        2. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
          • Report Tweet
          • Report NetzDG Violation

          A cool, though not common any more, way to generate normally distributed numbers is called the Box-Muller transform, https://en.wikipedia.org/wiki/Box–Muller_transform …, and it combines the "Just throw the bad crap away" (aka rejection sampling) and two-dimensional approaches we've seen already.

          1 reply 2 retweets 34 likes
          Show this thread
        3. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
          • Report Tweet
          • Report NetzDG Violation

          With Box-Muller, we choose two random values, between -2^^31 and 2^^31 say, we plot them as x and y on a two dimensional plane. If (x,y) lies within the circle of radius size 2^^31, we keep the point, otherwise we go again. r is the distance from the origin to (x, y) squared.

          1 reply 0 retweets 21 likes
          Show this thread
        4. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
          • Report Tweet
          • Report NetzDG Violation

          Here's a picture from Wikipedia, but basically we're throwing darts at a square and if they land in a circle we're good. It's amazing how much low-level stuff is dumb-as-rocks.pic.twitter.com/pQ97dvdD8x

          2 replies 3 retweets 54 likes
          Show this thread
        5. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
          • Report Tweet
          • Report NetzDG Violation

          O.k. some parting thoughts before ending this thread. First, if you need to generate random numbers in constant time, or exotic distributions, get super deep into this stuff. There are seriously rough weeds to tackle.

          2 replies 1 retweet 27 likes
          Show this thread
        6. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
          • Report Tweet
          • Report NetzDG Violation

          Second: if you find yourself building a whole RNG, it's really very hard, again, get deep in the weeds and learn about DRBGs, fork-safety, thread-safety, /dev/urandom, getrandom() and so on. Avoid if you can!

          4 replies 0 retweets 28 likes
          Show this thread
        7. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
          • Report Tweet
          • Report NetzDG Violation

          Third: always use a secure RNG, your language or programming environment should have one. *Don't* ever seed an RNG yourself. One exception: for fuzz inputs and other tests, where you may want repeat deterministically for debugging. But DON'T LET IT LEAK INTO PRODUCTION.

          4 replies 1 retweet 45 likes
          Show this thread
        8. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
          • Report Tweet
          • Report NetzDG Violation

          Another exception is games, where you may want to generate content and play based on a small seed value, BUT UNDERSTAND THAT THIS IS NOT SECURE.

          3 replies 0 retweets 31 likes
          Show this thread
        9. Colm MacCárthaigh‏ @colmmacc 29 Jun 2018
          • Report Tweet
          • Report NetzDG Violation

          Last tip: always measure your little random functions with a histogram or whatever. I still code these wrong and have to check. Thanks for reading!

          11 replies 7 retweets 127 likes
          Show this thread
        10. End of conversation
      1. This Tweet is unavailable.

      Loading seems to be taking a while.

      Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.

        Promoted Tweet

        false

        • © 2020 Twitter
        • About
        • Help Center
        • Terms
        • Privacy policy
        • Imprint
        • Cookies
        • Ads info