# PHP Science Programming

### Site Tools

permutations

Back to: Arbitrary-Precision Math

## Permutations: P(N, R)

The function defined here computes the total possible number of permutations there are within a population of N unique items selected in groups of R at a time. We often see this operation written something like:

When it comes to the number of permutations (P), the order or sequence of the R items, as extracted from a total population of N, is fundamentally important as the permutations equate to a total count of all the unique sequences that can be formed from the given population, if we only select lineups of R of them at a time.

Since these computations are done in arbitrary-precision, they could result in very large values extending out to hundreds or thousands of digits.

Permutations Calculator based on the function defined below.

The function used to perform the P(N,R) computation follows below.

```/*
========================================================================
This function returns the permutations of (N) items taken (R) at a time.
Like the digits of a number or the letters in a word, the sequential order
of the selected items is important.

Input arguments must be positive integers.  Any decimal argument will be
truncated to an integer, without rounding, rather than returning an error.

ERRORS:
FALSE is returned on error, if either argument is non-numeric or out
of valid range.
========================================================================
*/

function bcPerm_N_R (\$IntN, \$IntR)
{
\$N = trim(\$IntN);
\$R = trim(\$IntR);

// Error if either argument is non-numeric.
if (!is_numeric(\$N) or !is_numeric(\$R)) {return FALSE;}

// Truncate argument(s) to integer value(s) without rounding.

// Error if either argument is out of valid range.
if (\$N < 0 or \$R < 0 or \$R > \$N) {return FALSE;}

// Execute loop to compute P(N, R).
\$P=1;  for (\$i=0;  \$i < \$R;  \$i++) {\$P = bcmul(\$P, \$N-\$i);}

// Done.
return \$P;
}```

This is a test program to demonstrate the above function followed by the full source code.

```Permutations of N=8379 distinct items if taken in groups of R=6895 at a time:

The exact value of P (N,R) =
86071800688421330080040799303919702910537968874229335450937556849991441382203109181473191876213049627093264741243062644786148316090112416767669871414889956043209133667509626610200038033092564949812065832751683809167481916055186134296855300186352048360291100946619294450090366642724032096922889069705742293636565257969344142207613245039275961035701773439782815466948012096319011201295306891218324305570128730648909740023207127124996199503819632671446098472566348120839676983415096596349958991495597932377352897854366568576338186792639675136892324167006905466489358944174207193140479256809348189140451451730110472020534146028754373959289503728439418332892108825060291106441703790507098081548813534299969697375271711079057088605604322699737444550179218130122783517853013093515772013560568106107000356279684566207866579424401298971208148551122220304679348174177696272910425262732811605332126832605121263033995288959238193955979870767171811461457159456181838470229227368220120082273578039205496864231199132315765739117685195861722020053835292238221437648242846804267931652778095366408594982282464815723534921252563860166715627790215162252806229005561538573940689471471151314341020660304781322037151065352774452809185818981770644637690122114278071056845936476493332576102437816393876977681009053765244157679010590008005885097722072830922550794183909228920020868660564529393023010163639627933975587543046425781645901004898281531361860220129460690375071564249471085467583474359805392856142746122390211772955938127539492085737074402699271588425725102772566248202389135081024639877037461905049584846512065303121656932104803345962897360871821618704993409875484119717195085778574954561656560582961893324314641172476836553616045194345536879699480017958258348465405176209027620878990074071761001593814894832095637781032105367134603472489389370147061119005446932001133122947562200825010968557937461928268531886962129180607343859118391314541072301994643882949961233139469738480253705940054282194441039037810693916380062934599317713718933100836755536149714796193080568679223579959844422116040483713505775865124891149972412858970848171893083351331194461276848845929965177094101984443144652989297028276004169808988624933648891516083460339171955990390626497477788382580902290383775940174332211895375748300396900802987824310807358986786423501021508163153833704342325403578641825828277891568081649632678997127839772762935655046486399813267820730950507985484611317093159876771952930094927210430818052399880678216170327273613379726393427594331533246367211990109986828802328753849352939482397514074710155448465000056585870174837948874114893442233934532287930771924219785124950558368267998531611763178180402483609384441160210771799434484802495648147460533354532937004696062870927873108750986606102027197654768793757932676467092457304468259763803637404935234030039619970774236734738643242787313936428009399198225529351233991978066965839078215097139498019194216920006504956718092617139568107045402280224402388540052470715867284411533251914068475000668527233515405517162286031828409440871040614740738181848535634740932601636499440648232777441569788657466947238571551234248746155660803277055527747730677577469475334642351526790199704593936640989823648410771642648743024157161625547177399249129226898447227941196071168741471689755409852452284355143388172684561048393034781982734677745806445730004655509421646017939377391169174288713310181820563355983789621603317336888941134135890800941183314786410622371200518540221527233708787852691222470120070256329871809788399138000827803947838811090179475593251117602787880218077980459286634751321019673588973024132935359055412582922404451118158004360819964753912637115643989368823081241172362502163444516846988959967663479770001513140105271196175328359700303347820747553877990072939308593260192872870793001929775041460239367870547775621187332078203653079626953999346318245008750263508665299142188982660053691406996431874787108526719740959091029935898310054624917817528215353855619205569212923063506189614832024265521897294029814918262086232898732185750639990564270127977336331664026150108339116650655816911633669623345082954469607259082861788162849855176058725756530058536800834167061745267815601984129198461871015139768532803668809798720492938918746835785082364971895949903874189187514549991023122894323917372506244979927881338598829410250902430688194422447490041030252500644365314020459620592158965668365544397329951668370626449304498382883549641152193851359554000299278679679745642832337583427781108683488866329199021906865573542037279232663053186830181182144084374124290705999808150312444818856147771983524787401387850065333693283058104693595337058852392127296258604951911664051434516708902649413422129656482261376289062216278667597174757225664131929100774534839106216287887025635813760816704325707571783140708418264323761081025463228831190582726128025974002190854941098367840794484247240398786330524228499663663752428560108462340959341809481688276231845170780615171598904562046934705417596520316378291129510986747998096745597393514475120686491454109046717389383076415718092575952074147377294542945721920986374148353661730675974570675315824866538633357561254581484599908179877931834051743747847874611996489628961708502819297479557329656316705212780953567955581747198708234021094906962686909172665027787228571584551306420082135516878030690903750432638418632815339769002822237372691266656384710669100167539106918342025501914172460040745638654071878161453835470597845522290982050195403664484629234138583875965677975748167905602129849287257707780083386871952468894573715399679936551593151399744453911110937419731250184396312432362405663800891241730968994392436474416095573319521973198017101451518311267146460637376770517192323748721525325125843990632793197986915911036892741808294931220375580425965696146654309463836623645883274480144483182714834868635047827785637777738771354893694765133402524757368249573482116458646507667731766952071640967350297328739102692112988093338755696451572524133757923563078486662798470586510147092722575824352817916906545080446869888415885133169780447287724466783503251529387018362377648329502558862221359817295376814542342368832403004173745494679151977028132356754699246520101045152779781285796643791157827008114017639253116771550749308676820673948779792521315024874912613246350838349198958526051174571182549647426082227525322618462280722346144863234377598594751679117239043067388919709039544494455689104875132614646085604658568352135537529989982901591519520009266936056199592893819436435033468422161056677795164886519980429454476636527446203481246551402399207198086371600535659612560921598638080223096346932697426790702651704033384850236073385645133993599429864378316772757888225279827434384918586675487051982733732512249581232687662193146393080117316276617349103335814067693976198029282363411815499117454767066328442663676933547885077151043665055545033194185420609406279660818338045779237741518186696618931976137430091980409566537562513031572389980242756873575584389236496770831741987329085994352800727725537520792503420326477108701962431296425927540789840902879890955010161407519395322863038157957957582914053344152604014515124989801043026892224745506671967017263157113804323235506304372612862562376302087065563575356283420614665707585004514174791141337850321762704050790106760872445386728780715822081656834032364181069454969781903258407634749211823262070827311871433538235785933590753122644711535305242826814577098483302448583358223732584764005488930751180891766694816156195854327664448498024364154890605437649531702370314800424791936554428667808169897724090410854368943823278411205523703870397059063635239045442052353704305383448954633238167650734975833814149218396321796231561673058433199185326812022411938659980100627498103538852416440192287884852657123739042936772842394914533915305759108282155723217874347283125009462960104958240014070192484656127465766285331393481982976866308945969799222474916908434840034376183188481959793762282360778685683631610180652789071745369029284647934364275684774583958515012746626711629790310081932296681332060943192835217192421340768362299535920061819460374391548992202988520756795867841158143748808682247862767992234497727055269754194268539754681311642649550966186823835992879896377401154913942472168244120164236794685428964850081812343953043434790696542638699072497805807513484543657879007981759988771088046883396675084655138248521996964494356050827308486903602343908846351091920435238646650177369839119277853267737082126143734573125487678399525985323798853772365389638125782725273100714192840350275488940525258929705634277801615890090668013234123978588662559289247142174355476361553856951052743122590031493686616486995456821552061274105724476737446773640777271810254240757770434160442679795206793648693444331279196452434969793052131416285619943885717000328578280984787027234995754446410419014699363532903948108250120104091895767529142161119310274451044017303292315335384916023832387431283415998507201098029384918298477986753900740900120849486624481024242472238407863391325935264048633189677771113364828194325968528325634703882718472241059471993397477414036220429320700805741933738159605448412120267329698493506708317404809822886662216270265803688099264004999537543790190823669546522526038608322710389205999504423844098711936291102128272167446836007748905962484420936938403018238490987814088103151654381898912990408268673385893798304092109280526886705873017957301967593300434130098581285853336577919897192137701415000322643727409247617104939209580904758165588151912078482224594297573619231925757983349578899967260100523930340683315085040121532362774068097475021408809107552248271126604508547967578940922372738799970873538846796536464809821103828238997102709986329895574217917427644821484787445107532368091463392880008091729756813027486305994038520051814252917325731870761272842837110532205362018599312622220948315451707554767512740782935413221202244138129982910028887832217705532870868279885230710388597801736071120645484652375492711227709222673250385447404441350066369767870296062909102094205213794733591486339884696282975808430768422520120958178387200249140149853597377038326044589201446620061696525190017075632411476089402363291786031525541669170651701897402073266917393351711993397014733791012400467216442581349451304419222455573125459497178241026690962421004239928780976018201969350750556914020216830701976494891777598758871217822985083016807545110462231244304135877543546917907842850642655458514035753967298317220075287610915913910319593431366736946568266505183751322823680088210562919041158935485576947667706962269716082442098887086762053538737476009536875503279963835228861553548254071909104208913305737855426554139981192418824941470069240176745695789585119830668379663519666850180520326018721614713448245368073274069491034845913967541484036457659030271598333161983901657372937747355849294678600924323954329614710641614352502851595060551929972859287182959289236633641412889373307727604989489616551501054012108072810956652167982237683217251100850877389993371314298928204136401849790254292580920417424617121564646408317544945592357256002119200129887773014986272287729003396928656805649904805098826711022265126585569277880714285669473472815567625185723954604570042688299618895656361274723539777865337346488858442688014157550054864791837204741385841384041515501236470684696236935865270410809402109430467712975810024032705265662404661206081408955333253312111367003850148463866988776579592323769819810141484487795397917069690206715721169340018879126956405034457644516605015232677387358230099051666321708462941157201060217450192435224355196599209573265813546039584893582960016728147724887008094776826755353770710388363603697062382719580354685559116723444369503089095857025793205044627508438151141814540189540953124220304800822767649450798171520745346191134797101690208873437433569669974787799062875040602750661826467810583268532994372243081646126024373724249927098474048989402537921493996780854825247410153701311080385379617474504257194102212865826304963975764793471750164182379646100898974643595028085349689685881889860925223612227298964222509065707079547312925268756838904218477835887378709635925470073421093734864288227049033668564565016094718689387842873225732012805063693485962185431792756612494734282249008475772602122224957786553351749528982980108765038166370054797721119588018706066865490789574783207492261894916385307966144163656167365898427410884181216151588720351216848096878401062547984498272131485003947653292563392189982801109697906785061384775686688142332524377633281668492513993730608446658431507452482063504172402509534211791278777954381064431232771649098690259483238979747268585276155129990894560864385535588907743787147585000974003910336627729024543339648743571652851199691933785810195635696442733107880861968373336546002788082689307096095188794085728831881202229253974686685715803199816827456612422023625222473405262952893724793821584702875686640185297172962372856373969342856835866156715296059719077081339733367478113646462075181681251696965125212703635768401250401636597613730797071189011488424694237361307322321368200829626438237130799554259239379708806459988170956552044712893361891794232290476622820642059628471298999717700386196972557594864131663869004290511991328492732340078566239141896812755904420407947932021175910852433443473380016809707937781357020547634872128610982375349772414436485861526195549696235880355022599480127223773607243858657423813932525536041355760209744217868148501901471865471442340432444768839736009242242151253911540479125645864737673361948561912302920654880327764784505143545636927281232863565663068357743321042531415575254826352730019533448060267901662680047762240386973156145806665659249768946008491620072779454072830286802732715907324174276662813630136638974999700717353476681397766627631906826862108081075169381461333315352783696343122875906226690676560144399868195462652526257137316210652867144152222502461690444313052134018786068969604228864204676714944874048162848710327000756756932441505359585665586934289789300898750553474883891915554542087886454094636289917768047184123060229283441214054435425037760495568410833434950952075703220709112000513714189042445293394005634515674058696433775953181581560748521457150367381701060686842148555934774846217992944957391246502803814160606652348719290067856043169407799872615935163212803245764163724707410525906007156358166348056633985184269670740313439921986053137903224378983482185478514624584159827127086072840819750413189670501532608758605164177057861177864960708225236806777680078300807650827273112983624551174590370379329116666864185914114425204600754798355872407592822652623581157264381789437477144982591440717724351013868108370056435982185263534902056960579002641109119540276338208974378367586370105996907165441437115093163487308010114629015692342468454288637044266827835062691081914714084450426854049051692458812591289990595928364837564883630071714387873282690166304882715850184240211831981567350986817167753906586948292329028539544154377756028753808158276994853714171619386957566936466495040594389437710950200429798463609881662864173755763560730189282909630168237341146426662951116281516817354132873761687484706369198816465937959290704424759481302088813283677074069892208836235582072335449800649338645621282150298089322727700495396242657641646683130669867764018613488712711878486990610672325700100600592065067706674298332877653370641250350890781579197630181571913798274954846078536468072527860828917240682998325997530161356225081166471440945032775213722385693907407224964056844052974234409451670706296300693966865360278667664557078597637779211916448221017110660772898619288852269700780469231217346783764697700306847410862135007164981019903803729914755124656366654122519095709369043891955930232412671884699127145473402803971528058729035531744679184073857660588040849031267886612068049200668178268375423179069519565112697818609853022713970517618330642666557928740609643469275656308952901383536986829190006774296347217798538805794952522383755492553439597803714631659035825548481164486939060148370011725823283433982570384299777188010083166131911004057069446947722131937933559011276609548150999318661638340567887334448360499453533930176182644820962536396955786794842010931514164235900963809659975745767667504425071813847263507632126106996317591652886243779380181042412662858833546075376225899843955072356187833549452440649083355281155192068214201292422932546175926835951953572219058092953746996876371967290897516943635261865683189349719102516349707344760620063482389709110890263680727356758080727524693403068512255929390406631469907394953922419001773607327407679299329510263290069870481808477211181068020150518143500325916883060393747257089990211908136849118574995934710956170868129084148823592979668712015293950034745127974858096228570163912405811297310377732141382143243152132489401280451553494913089486708696638931732184459670834925980845793306461463026761648306502768605258802528065202107335721940265737500606196383750768294101654560742415061496416129350153934263720651074381850841294986719250569863642169847193211229352743389348873974177923309419047048390365983986887985849386113057575982464028221697207909405007647385042221951461981667865252496707497051620324576729843930534731174425415707907649346554847716844302754718299301730208022193150340489755491474757261249517224416175418463127511989264872338544241284172955235190875440968232546315128337842262631571126927744181687398543470305297842468624875339001795256946730265624736281994225688079911682207802007025635803524288278585014433127385413211860983091178466701071360733179520211922289269996184624012615448675599939559587327049302335549764584462963867230919099018934317921914036596862142163683111344250072443892390688719804589695513251775670788895012080676205364280400695801355668073293001249194306154264315901961569477450840429701032897555702969384609969640303476705900428434823192142972850448306889052827778419749480907451079472444569140949587685400349873251080973977620183861786894615905481206906465610669286054946674256736125746161398822084529900236336738455819035862546751351410355343984893713997470882498798397165573687262621252907274654886495606575647380991198966059126167450880921305849995994584416775450050583316492324958806854755189563358792645799154804300898246717158421022804257512818351948188601526080771718636646597446313304391882242047104964042524905414517551117052132899551584048801617597362194903106527777178038017152765636930495820473068112412003502543312869973459727928156219167792747512924550259235713733542557944531564459822326929987078833978096205516787653332957061129944086280808494191778440681781761218298828770963744867259876119213098935968346719721179182258129858368696860005518521522676571601219775334336407344916032312823629421076277346168881718560150801496353118156635927620600067288663932283856687592137345220405711480424734491203406800561852619449573029085516878182957229478289250953698866472812158283770373485571037899105976594199732174682189402600134241707534948806958578815190292034806689131769336683814052056028016170588192097979493451956567486018915011521031342625841848756365943460330223253656399946578451184938699029215301535965451728827342602789303997017520727071466677615188821381906986065490701334600465521744628186599188281434688303968521235745872156530926753202192916922428169173257458122735494985909198936125895052170848231726748656891962250190695115363517587831252619419367808228134285042056664541712180515283423812685403186522233421733019458992323304854806591129204252411371161597401203108348173371996418546395579738205080572131714540012698452566355729185616147625189996281409077360448771964288144213278871336652424679775096537539587170199784937236739752347108053751422202401721529508473272656077933246119264176386481410356072711299946702485229566874230834997131702115730794272722296548591619832851696225526279136532326915120368409102028872684776460998749758987205539189214309250397968178806628713757654224820641266422119058012650296329964512089212768968190115404411351287148809623488409459209975520460850649313406405172602381515176047485595442788594590363761597886990716311203931606412988898139519083011376757651553280051904913234451221657456365882131368913058630067416726280239973017207791236586667426771947947476124739322669827093851493973511581094125058148910117091802180294294659814396228699188479433471275551523441188140190873121144031008184926828242313412000930505363646601132408024748947783727852268532013832774240496394291082509067666124149183403718630507235826181014607619930807759045660370898653199965807084572825547785384189501790126680261358941673710181008152648623805711659507091414463329455738302277492712373716279759431912909677457798597227712317887142756427275208162350696437487745619663542754191670826133790476566006794808534617724345089391584478179387130831790802873878090340675366843969450393177040958458202529405450830633471679554517770029602499068485901491686835894265842902680851327441153764204350411203189304834085389878065737024856625949980405561832791328032199366002647516614230325960823621512817725534372671292313004083509090082840068028801895702784969132857533984618722154592667018989985050581467380137297020233127217434013479281919262806573349138445522510957370663604573601272302412715138841530307899718785030745179186467834597876355166919302777344980891120149522922743917856225921863789066795349711030916290867016283219357448938466154080144347645100997951313399368208190437272597467777025627305556253551878285143789305019895583771593516996210754068186661400094740092389617658526131176744824475295554977199344337512465984342071123267896568678961570560991633508807251832404956966728394972254407414483336797499035473897819733968916211659866969719653388288418618601787364541215706032239889621457575245923967573499385491482826358900870759278672144122601419424323410250698590517668782517858737705205055345443822908815793198670756833260582099233049003157693142665735753362818173252880901729400984958744825437098140512693259874599541584980908474197622121479308701485459070297217056354530354016611204832466992083815905663617781448519496476139910707787407915642279600940013689214388706835177610479597868053189177184105436831929472966276177964883094660455081290728160451097069316351787586060219606816104437483147426790976618590971308603376568076240808925868810973095757332989598012202366206103461919735497298821022312608352598477170084151135288823606695042308644650739100042174099286664223328135359782119804260173334212084885805112556809606278401003794937825075580538153059277729137441690135494402848138009865643149720920384786862705976191735868474902032830283009790206239770237027492901440373912729274001663098943889914592581450768020375845686737705156319151985865867337573349075590543376337368030234088609836577418774314317777271651365003945224169589587281459336717615249863732771945691021820307244317701167166998356889067716702065263132674718406288242788822540834018937450163825982788142776902732526772613525427412189598488436309067034139964070555634321293856378284780573980522757700681799443548459172461738770649983897266691141740865781163200848773178814121432120115062607397895341716695880715750627340458750413248937265271964216324843374899320048623773399194707206385168431972009329313757270652472557044417564260177378898873539755867606097887105644838386040413156792850147260329040091984974580330765170272723510009731175490850539615079628800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Digits Count = 25172
```

```<?php

// Permutations: P = P(N, R)
// Generate random values for example.

\$N = mt_rand(10, 9999);
\$R = mt_rand(1, \$N); // Cannot exceed N value above.

\$P_NR = bcPerm_N_R(\$N, \$R);
\$DigitsCount = strlen(\$P_NR);

print
"<pre>
Permutations of N=\$N distinct items if taken in groups of R=\$R at a time:

The exact value of P (N,R) =
\$P_NR
Digits Count = \$DigitsCount
</pre>";

// ==================================
function bcPerm_N_R (\$IntN, \$IntR)
{
\$N = trim(\$IntN);
\$R = trim(\$IntR);

if (!is_numeric(\$N) or !is_numeric(\$R)) {return FALSE;}