@JoZ1:
Voor het goede begrip zal ik mijn stelling:
int randomgetal1 = rand.Next(1,100);
int randomgetal2 = rand.Next(0,100/randomgetal1);
antwoord = randomgetal1 * randomgetal2;
oftewel:
int x = rand.Next(1,100);
int y = rand.Next(0,100/x);
z = x * y;
ook nog even verduidelijken.
- "Ik werk volgens een ander principe."
Klopt, één van ons tweeën doet het achterstevoren, maar in principe hoeft dat niet uit te maken.
- "Jij doet het als volgt: x * y = z, met x en y willekeurige getallen."
Klopt niet, bij mij is de y helemaal niet willekeurig, maar afhankelijk van de x en het gestelde maximum 100 voor het product:
int y = rand.Next(0,100/x).
Bv.: x=2, dan 100/2=50, en y ligt tussen de 0 en de 50; of x=15, dan 100/15=6,667 cq. afgerond ligt y tussen de 0 en de 6.
Enz.: gaat altijd goed.
- "Het klopt dat hier nooit breuken uit kunnen komen."
Correct. Na m'n vaststelling van x en y (beide hele getallen) wordt het product x*y berekend, dat dus ook een heel getal is (en onder de 100).
Klaar! 
- "Het probleem hiermee is ... dat er hier geen maximum uitkomst (z) kan worden bepaald."
Klopt niet wegens punt 2: het maximum van de y ligt al vast wegens de voorwaarde max.y=100/x, die verdisconteerd is in het random trekken van y. Het probleem van geen max. voor z doet zich dus niet voor, die zit ingebakken. En x en y zijn gemaakt tot hele getallen, dus er hoeft geen modulo aan te pas te komen.
- "Maximum uitkomst (z) kan worden bepaald... als je de z als willekeurig getal genereert."
Klopt ook, je kan ook de z randommen tussen de 0 en de 100, maar dan moet je wel de voorwaarde voor y laten vallen! :d
- In dat geval ga je wat ik noem achterstevoren te werk: bij x*y=z de x en de z trekken en dan terugrekenen om de y te bepalen: y=z/x.
En als z en x beide hele getallen zijn, zal y in tig van de tig gevallen een breuk zijn.
Dan moet je inderdaad wel een modulo gaan toepassen om ook nog van y een heel getal te maken. Of een int y nemen, die ook afrondt.
Vervolgens zal je ook nog op basis van de eerder getrokken x en de nu afgeronde y een nieuw product z moeten vaststellen, want x*y moet wel z zijn!
- Bv. x=15 getrokken, onafhankelijk wordt z=63 getrokken. Volgens y=z/x is y=63/15=4,2 > afgerond y=4. Dan is x*y=15*4=60 en niet 63 > dus de z moet bijgesteld worden.
- Kan ook, maar ik vind dat wat omslachtig: in punt 3 was ik al klaar.

=======
Ter illustratie dat mijn redenering (ook) klopt, heb ik deze met vertaling van het vb-script in javascript op een demo-pagina gezet.
- Demo: vermenigvuldigsommen.htm
Hier komen prachtige sommen uit, die allemaal voldoen aan de voorwaarden.
Zie ook de broncode.
=======
MAAR ... of je het nu met javascript of vb-script doet, dit is slechts het aperitief.
Nu begint het feestje voor een sommen-generator pas echt!
Bij een aantal keer achter elkaar trekken zal opvallen dat er wel
erg veel nullen, enen en tweeën als tweede getal tevoorschijn komen...
- NB: met de reset-knop hoef je niet steeds antwoord te geven.

... en dat klopt als een zwerende vinger.
Want als je het eerste getal willekeurig laat trekken uit 1 tot 100, dan is er volgens de kansrekening bv. 50% kans dat het getal boven de 50 ligt.
- Bij een x>50 kan de y vervolgens niet anders dan 0 of 1 zijn, anders wordt het product groter dan 100.
- Evenzo is er 66% kans dat het eerste getal groter is dan 34; dan kom je voor de y niet hoger dan 0, 1 en 2.
Dit kan je mooi zien als je in één klap 50 sommen laat maken.
- Demo: vermenigvuldigsommen-2.htm
Gemakshalve zijn de antwoorden achterwege gelaten.
Voor de demo zijn de sommen gesorteerd op het kleinste getal voorop, en dan in kolommen.
Behalve de reset zit er ook een knop op om (herhaald) nog eens 10 extra willekeurige sommen te maken.
Zekert bij wat herhalen ziet het evenwicht er aardig verstoord uit; de linkerkant is veel zwaarder. - En daar zitten net de makkelijke.
Het is al even geleden dat ik op de schoolbanken ingewijd werd in de geheimen van mutaties en permutaties, maar ik denk dat als je maar heel veel sommen laat maken de figuur uitkomt op een mooie parabool of hyperbool.
=======
Normaliseren van de verdeelsleutel
Nu zal het niet de bedoeling van de sommen-generator zijn om een hele klas leerlingen wat lacherig te maken bij oefeningen of proefwerken met een overmaat aan opgaven in de gedaante van 0*..=.. , 1*..=.. en 2*..=..
Eén van de manieren om een wat betere spreiding van de (helemaal niet zo) random getallen te krijgen, is om als voorwaarde voor de eerste trekking te stellen dat het getal x niet groter mag zijn dan 10 (en minstens 1 vanwege het onmogelijke delen door nul).
De tweede getallen komen dan in de range van 100/1 - 100/10, ergo het tweede getal ligt dan tussen de 0 en de 99.
Ga je hier heel veel meer sommen tegelijkertijd laten aanmaken, dan zal je vroeger of later toch bij de parabool/hyperbool van nummer 2 uitkomen, want er zijn nu een eenmaal meer producten met kleine getallen onder de 100 dan met grote getallen onder de 100.
=======
Moeilijker maken
Met extra voorwaarden kan je de sommen ook moeilijker maken, bijvoorbeeld:
- Sommen met 0*..=.. en 1*..=.. worden er uit gewipt.
- Het aantal sommen met 2*..=.. wordt beperkt tot maximaal 6.
- Het tweede getal moet altijd hoger dan 10 zijn.
Als je dat combineert, krijg je het volgende uitstapje.
=======
MAAR... er zitten dezelfde sommen bij!
Misschien is het nog niet zo opgevallen, maar in alle voorgaande demo's zitten dubbele (of driedubbele enz.) sommen met exact dezelfde getallen.
Bij toeval kan dat eventueel niet het geval zijn, maar met een paar keer resetten komen er altijd dubbele tevoorschijn.
Ook dat is logisch: er wordt elke keer met een schone lei begonnen,
"dobbelstenen werpen met teruglegging", en dan is er altijd de kans dat er hetzelfde uit komt.
Om dat tegen te gaan, moet je controleren of een getallenkoppel al eerder op de lijst is gezet. En dat wordt meteen een stuk ingewikkelder: je moet een dubbele
loop laten uitvoeren. D.w.z. bij elk eerste getal nagaan of dat er al eens is; en als het er is, ook nagaan of dan ook het bijbehorende tweede getal er al is.
=======
Husselen
Om niet steeds het kleinste getal voorop te hebben en het weer wat lastiger te maken, kan je op het eind gaan husselen: om en om het kleinste of het grootste getal voorop zetten in de lijst.
In de uiteindelijke generator hoeft het sorteren natuurlijk niet, dat kan er uit.
Veder kan je behalve het uitzeven van dubbele sommen, naar hartenlust extra voorwaarden stellen (zoals in 3a).
Hier een generator waarin geen 0 en 1 sommen zitten, en het tweede getal altijd hoger dan 10 is.
- Demo: vermenigvuldigsommen-5.htm
Dat begint al aardig op ambachtelijk handwerk te lijken, want dat kan natuurlijk ook altijd: dan hoef je je nergens om te bekommeren. 
Zoals druk maken om de scriptfout die er in zit: soms worden het niet precies 42 sommen; maar het gaat om het idee. *) 
=======
Conclusie
Om voor computer-logica bruikbaar te maken wat voor ons menselijk brein heel eenvoudig is, kan nog wel eens tegenvallen.
Met vriendelijke groet,
CSShunter
___________
*) Troost: er zijn speciaal voor leerkrachten wat online
sommen-generators met Google te vinden, maar bv. deze
meester-en-juf.nl heeft er prettig veel dubbele tussen zitten. Zowel geheel identieke als van de soort 2*3 / 3*2. En prettig veel hele kleine getallen die met elkaar vermenigvuldigd mogen worden...
De
sommenmaker.nl heeft meer instelmogelijkheden en brengt het er een stuk beter van af (ook nog wel kans op dubbele).
Maar beiden kunnen alleen een printbaar rekenblad afleveren, en zijn niet online te beoefenen.