Ok I need red dye for my huge rainbow farm. However I used up all my red dye on other blocks of wool (stupid of me). So I have 4 bonemeal. What are the chances that when placed I can get a red flower? I don't want to leave the area (because I'm on an island).
Each use of bonemeal will have a chance to affect every grass block in a six-block square radius around the one you used the bonemeal on. Assuming a featureless, flat area of grass, this means it will affect a 13x13 area. However, the blocks closer to the bonemeal are far, far more likely to be affected, with the ones near the edge rarely growing at all. I spent a couple of minutes in Creative mode placing bonemeal on the same space over and over, and this is the result:
A nice, 13x13 square, still with many empty spaces. So, clearly, we need to know roughly how many spaces will grow something. This could be worked out from the code, but it's much easier to just gather some sample data, and check.
So, I tried placing a single piece of bonemeal, counting the results, clearing the space, and repeating. After twenty pieces of bonemeal, I had a total of 468 things grown; 418 Tall Grass, 20 roses, and 30 dandelions. This corresponds rather well to the 90%/3.33%/6.66% rates mentioned on the Minecraft Wiki page on bonemeal.
So, it would seem that each unit of bonemeal will, on average, create 23.4 plants, with an average of about one rose per bonemeal, and three dandelions per two. Remember, of course, that it is still possible to get quite a bit more or less than the average; random is random, and if you only have a few bonemeal, you may well end up with pretty bad luck. Even in just my limited testing, I had at least one streak of three runs in a row without any roses at all.
And, of course, this all assumes that the whole 13x13 area is cleared each time; any obstacles in the way, especially close to the block you're using the bonemeal on, will reduce the yield.
(edit: as pointed out in the comments, while these odds are correct per plant, not all squares in the affected area will grow plants at all, and the odds that they will are not published. So these numbers are unrealistically high.)
According to the Minecraft wiki, it affects a 10x10 area around where you used it. Each grass block in that area has a 90% chance of becoming tall grass; the ones that do not have a 1/3 chance of becoming roses and a 2/3 chance of becoming dandelions. So, if you have a full 10x10 area of grass blocks (100 blocks), you can, on average, expect 90 tall grass, 3 roses, and 7 dandelions per bonemeal.