{"id":744,"date":"2026-07-29T07:16:45","date_gmt":"2026-07-29T07:16:45","guid":{"rendered":"https:\/\/wheelnames.org\/?page_id=744"},"modified":"2026-09-21T11:15:27","modified_gmt":"2026-09-21T11:15:27","slug":"roleta-aleatoria-online-nomes-numeros-e-decisoes","status":"publish","type":"page","link":"https:\/\/wheelnames.org\/pt-pt\/","title":{"rendered":"Roleta Aleat\u00f3ria Online: Nomes, N\u00fameros e Decis\u00f5es"},"content":{"rendered":"\n<section aria-labelledby=\"roleta-title\" style=\"width:100vw;margin:0 0 0 calc(50% - 50vw);padding:34px 20px 28px;text-align:center;background:#07101d;color:#e8eefc\">\n<div style=\"max-width:1180px;margin:0 auto\">\n<span style=\"display:inline-flex;align-items:center;padding:7px 12px;border-radius:999px;background:#111b2e;font-size:.82rem;font-weight:800;color:#c7d2fe\">Gr\u00e1tis, r\u00e1pida e sem registo<\/span>\n<h1 id=\"roleta-title\" style=\"font-size:clamp(2.55rem,6vw,5rem);line-height:1.03;letter-spacing:-.05em;margin:16px 0 12px;color:#f8fafc!important;opacity:1!important\">Roleta de Nomes Online Gr\u00e1tis \u2014 Gira a Roda Aleat\u00f3ria<\/h1>\n<p style=\"max-width:850px;margin:0 auto;color:#cbd5e1;font-size:clamp(1.05rem,2vw,1.24rem);line-height:1.7\"><strong style=\"color:#fff\">Roleta aleat\u00f3ria<\/strong> gratuita para sortear nomes, n\u00fameros, letras, cores e decis\u00f5es. Adicione as suas op\u00e7\u00f5es, personalize a roda e gire para obter um resultado imediato, visual e imparcial.<\/p>\n<div style=\"display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:18px\">\n<span style=\"padding:8px 13px;border-radius:999px;background:#111b2e;color:#e2e8f0;font-size:.9rem;font-weight:750\">nomes e n\u00fameros<\/span>\n<span style=\"padding:8px 13px;border-radius:999px;background:#111b2e;color:#e2e8f0;font-size:.9rem;font-weight:750\">sim ou n\u00e3o<\/span>\n<span style=\"padding:8px 13px;border-radius:999px;background:#111b2e;color:#e2e8f0;font-size:.9rem;font-weight:750\">listas personalizadas<\/span>\n<span style=\"padding:8px 13px;border-radius:999px;background:#111b2e;color:#e2e8f0;font-size:.9rem;font-weight:750\">telem\u00f3vel e computador<\/span>\n<\/div>\n<div class=\"wnx-config\" data-title=\"Girar a Roleta Aleat\u00f3ria\" data-mode=\"standard\" data-items=\"Ana~Bruno~Carla~Diogo~Eva~Filipe\" data-palette=\"#6366f1,#8b5cf6,#ec4899,#f97316,#14b8a6,#3b82f6\" data-count=\"1\" hidden><\/div>\n<\/div>\n<\/section>\n\n\n<section class=\"wnx-spinner\" aria-label=\"Interactive spinning wheel\">\n  <div class=\"wnx-toolbar\">\n    <div class=\"wnx-actions\">\n      <button class=\"wnx-btn wnx-share\" type=\"button\">Share<\/button>\n      <button class=\"wnx-btn wnx-export wnx-wide\" type=\"button\">Export CSV<\/button>\n      <button class=\"wnx-btn wnx-fullscreen\" type=\"button\">Fullscreen<\/button>\n      <button class=\"wnx-btn wnx-hide-panel\" type=\"button\">Hide Panel<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"wnx-layout\">\n    <section class=\"wnx-stage\">\n      <h2 class=\"wnx-title\">Wheel of Names<\/h2>\n      <div class=\"wnx-wheelbox\">\n        <div class=\"wnx-pointer\" aria-hidden=\"true\"><\/div>\n        <canvas class=\"wnx-canvas\" width=\"900\" height=\"900\" role=\"img\" aria-label=\"Spinning wheel\"><\/canvas>\n      <\/div>\n      <button class=\"wnx-spin\" type=\"button\">SPIN THE WHEEL<\/button>\n      <div class=\"wnx-badges\">\n        <span class=\"wnx-badge wnx-badge-elimination\">Elimination: OFF<\/span>\n        <span class=\"wnx-badge wnx-badge-accumulation\">Accumulation: OFF<\/span>\n        <span class=\"wnx-badge wnx-badge-auto\">Auto-Spin: OFF<\/span>\n        <span class=\"wnx-badge wnx-badge-smart\">Fair Rotation: OFF<\/span>\n      <\/div>\n      <div class=\"wnx-result\" aria-live=\"polite\">Add entries and spin the wheel.<\/div>\n    <\/section>\n\n    <aside class=\"wnx-panel\">\n      <div class=\"wnx-tabs\">\n        <button class=\"wnx-tab is-active\" type=\"button\" data-tab=\"entries\">Entries<\/button>\n        <button class=\"wnx-tab\" type=\"button\" data-tab=\"design\">Design<\/button>\n        <button class=\"wnx-tab wnx-tab-images\" type=\"button\" data-tab=\"images\">Images<\/button>\n        <button class=\"wnx-tab wnx-tab-smart\" type=\"button\" data-tab=\"smart\">Smart \u2726<\/button>\n        <button class=\"wnx-tab\" type=\"button\" data-tab=\"history\">History<\/button>\n      <\/div>\n\n      <section class=\"wnx-pane is-active\" data-pane=\"entries\">\n        <div class=\"wnx-add\">\n          <input class=\"wnx-input wnx-new-entry\" type=\"text\" placeholder=\"Add an entry\" aria-label=\"New wheel entry\">\n          <button class=\"wnx-btn wnx-add-button\" type=\"button\">+<\/button>\n        <\/div>\n        <div class=\"wnx-tools\">\n          <button class=\"wnx-btn wnx-undo\" type=\"button\">Undo<\/button>\n          <button class=\"wnx-btn wnx-redo\" type=\"button\">Redo<\/button>\n          <button class=\"wnx-btn wnx-shuffle\" type=\"button\">Shuffle<\/button>\n          <button class=\"wnx-btn wnx-clear\" type=\"button\">Clear<\/button>\n          <label class=\"wnx-upload\">Upload CSV<input class=\"wnx-file\" type=\"file\" accept=\".csv,text\/csv,text\/plain\"><\/label>\n        <\/div>\n        <textarea class=\"wnx-bulk\"><\/textarea>\n        <button class=\"wnx-btn wnx-apply\" type=\"button\">Apply List<\/button>\n        <ul class=\"wnx-list\"><\/ul>\n      <\/section>\n\n      <section class=\"wnx-pane\" data-pane=\"design\">\n        <div class=\"wnx-field\"><label>Color palette<\/label><div class=\"wnx-palettes\"><\/div><\/div>\n        <div class=\"wnx-field\"><label>Spin duration: <span class=\"wnx-duration-text\">4<\/span> seconds<\/label><input class=\"wnx-duration\" type=\"range\" min=\"1\" max=\"15\" step=\"1\" value=\"15\"><\/div>\n        <div class=\"wnx-checks\">\n          <label><input class=\"wnx-elimination\" type=\"checkbox\"> Elimination mode<\/label>\n          <label><input class=\"wnx-accumulation\" type=\"checkbox\"> Accumulation mode<\/label>\n          <label><input class=\"wnx-auto\" type=\"checkbox\"> Auto-spin<\/label>\n        <\/div>\n        <div class=\"wnx-field wnx-multi-field\"><label>Unique winners<\/label><input class=\"wnx-number wnx-winner-count\" type=\"number\" min=\"1\" max=\"20\" value=\"1\"><\/div>\n      <\/section>\n\n      <section class=\"wnx-pane\" data-pane=\"images\">\n        <div class=\"wnx-image-card\">\n          <h3>Wheel background image<\/h3>\n          <p>Add one image as your spinning wheel background.<\/p>\n          <label class=\"wnx-upload wnx-image-upload\">Choose background<input class=\"wnx-bg-file\" type=\"file\" accept=\"image\/*\"><\/label>\n          <div class=\"wnx-image-row\"><label>Image visibility<\/label><input class=\"wnx-bg-opacity\" type=\"range\" min=\"0\" max=\"100\" value=\"90\"><\/div>\n          <div class=\"wnx-image-actions\"><button class=\"wnx-btn wnx-remove-bg\" type=\"button\" disabled>Reset to normal<\/button><span class=\"wnx-bg-status\">No image selected<\/span><\/div>\n        <\/div>\n\n        <div class=\"wnx-image-card\">\n          <h3>Center image or logo<\/h3>\n          <p>Place a logo, icon, or photo inside the center hub.<\/p>\n          <label class=\"wnx-upload wnx-image-upload\">Choose center image<input class=\"wnx-center-file\" type=\"file\" accept=\"image\/*\"><\/label>\n          <div class=\"wnx-image-row\"><label>Center image size<\/label><input class=\"wnx-center-size\" type=\"range\" min=\"35\" max=\"150\" value=\"62\"><\/div>\n          <div class=\"wnx-image-actions\"><button class=\"wnx-btn wnx-remove-center\" type=\"button\" disabled>Remove center image<\/button><span class=\"wnx-center-status\">No image selected<\/span><\/div>\n        <\/div>\n\n        <div class=\"wnx-image-card\">\n          <h3>Image as a wheel entry<\/h3>\n          <p>Add an image-backed slice with an editable text label.<\/p>\n          <input class=\"wnx-input wnx-image-entry-name\" type=\"text\" placeholder=\"Entry label\" aria-label=\"Image entry label\">\n          <label class=\"wnx-upload wnx-image-upload\">Choose entry image<input class=\"wnx-entry-image-file\" type=\"file\" accept=\"image\/*\"><\/label>\n          <div class=\"wnx-entry-image-preview\" hidden><img alt=\"Selected entry image preview\"><span><\/span><\/div>\n          <button class=\"wnx-btn wnx-add-image-entry\" type=\"button\" disabled>Add image entry<\/button>\n        <\/div>\n\n        <button class=\"wnx-btn wnx-reset-images\" type=\"button\">Reset all images<\/button>\n        <p class=\"wnx-image-note\">Images are optimized and kept in this browser session. They are not included in shared URLs or CSV exports.<\/p>\n      <\/section>\n\n      <section class=\"wnx-pane\" data-pane=\"smart\">\n        <div class=\"wnx-smart-card\">\n          <h3>Smart Fair Rotation<\/h3>\n          <label class=\"wnx-smart-toggle\"><input class=\"wnx-smart-balance\" type=\"checkbox\"> Prioritize least-selected entries<\/label>\n          <div class=\"wnx-smart-row\"><label>Winner cooldown<\/label><select class=\"wnx-input wnx-smart-cooldown\"><option value=\"0\">Off<\/option><option value=\"1\">1 spin<\/option><option value=\"2\">2 spins<\/option><option value=\"3\">3 spins<\/option><option value=\"4\">4 spins<\/option><option value=\"5\">5 spins<\/option><\/select><\/div>\n          <p class=\"wnx-smart-status\">Pure random mode is active.<\/p>\n          <div class=\"wnx-smart-metrics\"><div><b class=\"wnx-balance-score\">100%<\/b><span>balance score<\/span><\/div><div><b class=\"wnx-smart-spins\">0<\/b><span>tracked spins<\/span><\/div><\/div>\n          <div class=\"wnx-smart-counts\"><\/div>\n          <button class=\"wnx-btn wnx-smart-reset\" type=\"button\">Reset Smart Stats<\/button>\n        <\/div>\n        <div class=\"wnx-smart-card\">\n          <h3>Cryptographic Draw Receipt<\/h3>\n          <p>Creates a tamper-evident record of the result, timestamp, entries and active modes.<\/p>\n          <code class=\"wnx-receipt-id\">No receipt yet<\/code>\n          <div class=\"wnx-smart-buttons\"><button class=\"wnx-btn wnx-copy-receipt\" type=\"button\" disabled>Copy Receipt<\/button><button class=\"wnx-btn wnx-download-receipt\" type=\"button\" disabled>Download JSON<\/button><\/div>\n        <\/div>\n      <\/section>\n\n      <section class=\"wnx-pane\" data-pane=\"history\"><ol class=\"wnx-history\"><\/ol><p class=\"wnx-empty\">No spins yet.<\/p><\/section>\n    <\/aside>\n  <\/div>\n\n\n<script>\n(()=>{\n  const r=(document.currentScript&&document.currentScript.closest('.wnx-spinner'))||document.querySelector('.wnx-spinner');\n  if(!r||r.dataset.ready)return;\n  r.dataset.ready='1';\n\n  const $=s=>r.querySelector(s),$$=s=>[...r.querySelectorAll(s)];\n  const params=new URLSearchParams(location.search),cfg=document.querySelector('.wnx-config');\n  const mode=cfg?.dataset.mode||r.dataset.mode||'standard';\n  const title=cfg?.dataset.title||r.dataset.title||document.querySelector('.wn-page h1')?.textContent||'Wheel of Names';\n  const raw=params.get('wnitems')||cfg?.dataset.items||r.dataset.items||'Alice~Bob~Charlie~David~Eve~Frank';\n  const isHomepage=document.body.classList.contains('page-id-10')||location.pathname==='\/';\n  const rawPalette=((cfg?.dataset.palette)||r.dataset.palette||'').split(',').filter(Boolean);\n  const storedPalette=r.querySelector('.wnx-canvas')?._wnxDefaultColors;\n  const configuredPalette=(!isHomepage&&rawPalette.some(c=>\/^#01[0-9a-f]{4}$\/i.test(c))&&Array.isArray(storedPalette)&&storedPalette.length>2)?storedPalette:rawPalette;\n  const hslHex=(h,s,l)=>{s\/=100;l\/=100;const k=n=>(n+h\/30)%12,a=s*Math.min(l,1-l),f=n=>l-a*Math.max(-1,Math.min(k(n)-3,Math.min(9-k(n),1)));return '#'+[f(0),f(8),f(4)].map(v=>Math.round(v*255).toString(16).padStart(2,'0')).join('')};\n  const themeSeed=[...location.pathname].reduce((a,c)=>(a*31+c.charCodeAt(0))>>>0,7);\n  const autoPalette=[0,47,94,141,188,235].map((d,i)=>hslHex((themeSeed%360+d)%360,72-(i%2)*8,50+(i%3)*4));\n  const classicPalette=['#ff2448','#f400a8','#00c96b','#087dff','#7500ec','#ff243f'];\n  const palettes=(isHomepage?[configuredPalette,classicPalette,['#ef476f','#f78c6b','#ffd166','#06d6a0','#118ab2','#7353ba'],['#22c55e','#06b6d4','#3b82f6','#8b5cf6','#ec4899','#f59e0b']]:[configuredPalette.length>2?configuredPalette:autoPalette,autoPalette,classicPalette,['#ef476f','#f78c6b','#ffd166','#06d6a0','#118ab2','#7353ba'],['#22c55e','#06b6d4','#3b82f6','#8b5cf6','#ec4899','#f59e0b']]).filter(x=>x.length>2);\n\n  let colors=palettes[0];\n  let entries=raw.split('~').map(v=>{try{return decodeURIComponent(v)}catch(e){return v}}).filter(Boolean).map(v=>{\n    const p=v.split('|');\n    const weight=mode==='weighted'?Math.max(1,Number(p.pop())||1):1;\n    return{name:p.join('|'),weight,count:0,last:-999,image:''};\n  });\n  let angle=0,busy=false,history=[],undo=[],redo=[],spinNumber=0,lastReceipt=null,preSpin=[];\n  let backgroundImage='',centerImage='',backgroundOpacity=.9,centerRadius=62,pendingEntryImage='',pendingEntryFilename='';\n  const imageCache=new Map();\n\n  const canvas=$('.wnx-canvas'),ctx=canvas.getContext('2d'),spin=$('.wnx-spin'),result=$('.wnx-result'),list=$('.wnx-list');\n  if(!isHomepage){canvas.width=720;canvas.height=720;r.dataset.lightweight='1';}\n  const elimination=$('.wnx-elimination'),accumulation=$('.wnx-accumulation'),auto=$('.wnx-auto'),winnerCount=$('.wnx-winner-count'),duration=$('.wnx-duration');\n  const balance=$('.wnx-smart-balance'),cooldown=$('.wnx-smart-cooldown');\n\n  $('.wnx-title').textContent=title;\n  elimination.checked=mode==='norepeat'||params.get('wnremove')==='1';\n  winnerCount.value=mode==='multi'?Math.max(1,Number(cfg?.dataset.count||r.dataset.count)||3):1;\n  $('.wnx-multi-field').classList.toggle('wnx-hidden',mode!=='multi');\n\n  const escapeHtml=s=>String(s).replace(\/[&<>\"']\/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[m]));\n  const snapshot=()=>JSON.stringify(entries);\n  const save=()=>{undo.push(snapshot());if(undo.length>25)undo.shift();redo=[];};\n  const randomInt=n=>{if(n<=1)return 0;const limit=Math.floor(0x100000000\/n)*n,a=new Uint32Array(1);do{crypto.getRandomValues(a)}while(a[0]>=limit);return a[0]%n;};\n\n  function getImage(src){\n    if(!src)return null;\n    if(imageCache.has(src))return imageCache.get(src);\n    const img=new Image();\n    img.onload=draw;\n    img.src=src;\n    imageCache.set(src,img);\n    return img;\n  }\n\n  function drawCover(img,x,y,w,h){\n    if(!img||!img.complete||!img.naturalWidth)return;\n    const scale=Math.max(w\/img.naturalWidth,h\/img.naturalHeight);\n    const dw=img.naturalWidth*scale,dh=img.naturalHeight*scale;\n    ctx.drawImage(img,x+(w-dw)\/2,y+(h-dh)\/2,dw,dh);\n  }\n\n  function drawContain(img,x,y,w,h){\n    if(!img||!img.complete||!img.naturalWidth)return;\n    const scale=Math.min(w\/img.naturalWidth,h\/img.naturalHeight);\n    const dw=img.naturalWidth*scale,dh=img.naturalHeight*scale;\n    ctx.drawImage(img,x+(w-dw)\/2,y+(h-dh)\/2,dw,dh);\n  }\n\n  function readOptimizedImage(file,maxSize=1000){\n    return new Promise((resolve,reject)=>{\n      if(!file||!file.type.startsWith('image\/')){reject(new Error('Please choose an image file.'));return;}\n      const reader=new FileReader();\n      reader.onerror=()=>reject(new Error('The image could not be read.'));\n      reader.onload=()=>{\n        const img=new Image();\n        img.onerror=()=>reject(new Error('The image format is not supported.'));\n        img.onload=()=>{\n          const scale=Math.min(1,maxSize\/Math.max(img.naturalWidth,img.naturalHeight));\n          const w=Math.max(1,Math.round(img.naturalWidth*scale)),h=Math.max(1,Math.round(img.naturalHeight*scale));\n          const temp=document.createElement('canvas');temp.width=w;temp.height=h;\n          const t=temp.getContext('2d');t.drawImage(img,0,0,w,h);\n          const type=file.type==='image\/png'?'image\/png':'image\/jpeg';\n          resolve(temp.toDataURL(type,type==='image\/jpeg'?.86:undefined));\n        };\n        img.src=String(reader.result||'');\n      };\n      reader.readAsDataURL(file);\n    });\n  }\n\n  const smartOn=()=>!elimination.checked&&(balance.checked||Number(cooldown.value)>0);\n  function eligibleEntries(){\n    let pool=[...entries];\n    if(!smartOn())return pool;\n    const cd=Number(cooldown.value);\n    if(cd>0){const cooled=pool.filter(e=>spinNumber-e.last>=cd);if(cooled.length)pool=cooled;}\n    if(balance.checked&&pool.length){const min=Math.min(...pool.map(e=>e.count));pool=pool.filter(e=>e.count===min);}\n    return pool.length?pool:[...entries];\n  }\n\n  function segments(){\n    const total=entries.reduce((s,e)=>s+e.weight,0)||1;\n    let used=0;\n    return entries.map(entry=>{const start=used\/total*Math.PI*2;used+=entry.weight;return{entry,start,end:used\/total*Math.PI*2};});\n  }\n\n  function sliceGradient(color,mid,center,radius){\n    const hex=color.replace('#',''),n=parseInt(hex,16),r=(n>>16)&255,g=(n>>8)&255,b=n&255;\n    const tone=k=>'rgb('+Math.max(0,Math.min(255,r+k))+','+Math.max(0,Math.min(255,g+k))+','+Math.max(0,Math.min(255,b+k))+')';\n    const grad=ctx.createLinearGradient(center,center,center+Math.cos(mid)*radius,center+Math.sin(mid)*radius);\n    grad.addColorStop(0,tone(40));grad.addColorStop(.52,color);grad.addColorStop(1,tone(-38));return grad;\n  }\n\n  function draw(){\n    const size=canvas.width,center=size\/2,radius=size*(418\/900),segs=segments(),allowed=new Set(eligibleEntries());\n    ctx.clearRect(0,0,size,size);\n\n    if(backgroundImage){\n      const img=getImage(backgroundImage);\n      ctx.save();ctx.beginPath();ctx.arc(center,center,radius,0,Math.PI*2);ctx.clip();ctx.globalAlpha=backgroundOpacity;ctx.translate(center,center);ctx.rotate(angle);drawContain(img,-radius,-radius,radius*2,radius*2);ctx.restore();\n    }\n\n    if(!segs.length){\n      ctx.beginPath();ctx.arc(center,center,radius,0,Math.PI*2);ctx.fillStyle='#0b1628';ctx.fill();ctx.strokeStyle='rgba(129,140,248,.24)';ctx.lineWidth=6;ctx.stroke();ctx.fillStyle='#94a3b8';ctx.font='800 34px system-ui';ctx.textAlign='center';ctx.fillText('Add entries',center,center);return;\n    }\n\n    segs.forEach((seg,index)=>{\n      const dim=smartOn()&&!allowed.has(seg.entry);\n      const start=seg.start+angle,end=seg.end+angle;\n      ctx.save();\n      ctx.globalAlpha=dim?.2:1;\n      ctx.beginPath();ctx.moveTo(center,center);ctx.arc(center,center,radius,start,end);ctx.closePath();\n\n      if(seg.entry.image){\n        ctx.save();ctx.clip();drawCover(getImage(seg.entry.image),center-radius,center-radius,radius*2,radius*2);ctx.restore();\n        ctx.globalAlpha=dim?.12:.22;ctx.fillStyle=colors[index%colors.length];ctx.fill();ctx.globalAlpha=dim?.2:1;\n      }else{\n        ctx.fillStyle=isHomepage?sliceGradient(colors[index%colors.length],(start+end)\/2,center,radius):colors[index%colors.length];\n        if(backgroundImage)ctx.globalAlpha=0;\n        ctx.fill();ctx.globalAlpha=dim?.2:1;\n      }\n\n      ctx.strokeStyle='rgba(255,255,255,.82)';ctx.lineWidth=5;ctx.stroke();\n      const mid=(seg.start+seg.end)\/2+angle;\n      ctx.translate(center,center);ctx.rotate(mid);ctx.textAlign='right';ctx.fillStyle='#fff';ctx.shadowColor='rgba(0,0,0,.55)';ctx.shadowBlur=isHomepage?8:3;\n      ctx.font=`850 ${Math.max(20,Math.min(38,390\/entries.length+18))}px system-ui`;\n      const label=seg.entry.name.length>22?seg.entry.name.slice(0,20)+'\u2026':seg.entry.name;\n      ctx.fillText(label,radius-34,10);ctx.restore();\n    });\n\n    ctx.beginPath();ctx.arc(center,center,radius+4,0,Math.PI*2);ctx.strokeStyle='#f6a600';ctx.lineWidth=15;ctx.stroke();\n    ctx.beginPath();ctx.arc(center,center,radius+4,0,Math.PI*2);ctx.strokeStyle='rgba(255,244,180,.92)';ctx.lineWidth=3;ctx.stroke();\n\n    const hub=centerRadius*size\/900;\n    ctx.save();ctx.beginPath();ctx.arc(center,center,hub,0,Math.PI*2);ctx.clip();\n    if(centerImage){drawCover(getImage(centerImage),center-hub,center-hub,hub*2,hub*2);}else{ctx.fillStyle='#0b1628';ctx.fillRect(center-hub,center-hub,hub*2,hub*2);}\n    ctx.restore();ctx.beginPath();ctx.arc(center,center,hub,0,Math.PI*2);ctx.strokeStyle='#f6a600';ctx.lineWidth=10*size\/900;ctx.stroke();ctx.beginPath();ctx.arc(center,center,hub,0,Math.PI*2);ctx.strokeStyle='rgba(255,244,180,.9)';ctx.lineWidth=2*size\/900;ctx.stroke();\n  }\n\n  function updateBadges(){\n    [[ $('.wnx-badge-elimination'),elimination,'Elimination'],[$('.wnx-badge-accumulation'),accumulation,'Accumulation'],[$('.wnx-badge-auto'),auto,'Auto-Spin'],[$('.wnx-badge-smart'),{checked:smartOn()},'Fair Rotation']].forEach(([el,input,label])=>{el.textContent=`${label}: ${input.checked?'ON':'OFF'}`;el.classList.toggle('is-on',input.checked);});\n  }\n\n  function balanceScore(){\n    if(!entries.length)return 100;\n    const total=entries.reduce((s,e)=>s+e.count,0),mean=total\/entries.length;\n    if(!mean)return 100;\n    const deviation=entries.reduce((s,e)=>s+Math.abs(e.count-mean),0)\/entries.length;\n    return Math.max(0,Math.round(100-deviation\/mean*100));\n  }\n\n  function updateDashboard(){\n    $('.wnx-balance-score').textContent=balanceScore()+'%';$('.wnx-smart-spins').textContent=String(spinNumber);\n    $('.wnx-smart-counts').innerHTML=[...entries].sort((a,b)=>a.count-b.count||a.name.localeCompare(b.name)).map(e=>`<div class=\"wnx-smart-count\"><span>${escapeHtml(e.name)}<\/span><b>${e.count}<\/b><\/div>`).join('')||'<p>No entries yet.<\/p>';\n    const status=$('.wnx-smart-status');\n    if(elimination.checked&&(balance.checked||Number(cooldown.value)>0))status.textContent='Smart Fair Rotation is paused while Elimination mode is active.';\n    else if(!smartOn())status.textContent='Pure random mode is active.';\n    else{const parts=[];if(balance.checked)parts.push('least-selected priority');if(Number(cooldown.value)>0)parts.push(`${cooldown.value}-spin cooldown`);status.textContent=`Smart mode active: ${parts.join(' + ')}. Dimmed slices are temporarily ineligible.`;}\n  }\n\n  function render(){\n    list.innerHTML=entries.map((entry,index)=>'<li class=\"wnx-entry\"><span class=\"wnx-grip\">\u22ee\u22ee<\/span><div class=\"wnx-entry-main\">'+(entry.image?'<span class=\"wnx-entry-thumb\"><img decoding=\"async\" src=\"'+entry.image+'\" alt=\"\"><\/span>':'')+'<input class=\"wnx-entry-name\" value=\"'+escapeHtml(entry.name)+'\" data-edit=\"'+index+'\" aria-label=\"Entry '+(index+1)+'\"><\/div><div class=\"wnx-weight\"><button class=\"wnx-mini\" data-act=\"minus\" data-i=\"'+index+'\">\u2212<\/button><span>'+entry.weight+'<\/span><button class=\"wnx-mini\" data-act=\"plus\" data-i=\"'+index+'\">+<\/button><\/div><button class=\"wnx-mini wnx-remove\" data-act=\"remove\" data-i=\"'+index+'\" aria-label=\"Remove '+escapeHtml(entry.name)+'\">\u00d7<\/button><\/li>').join('');\n    $('.wnx-undo').disabled=!undo.length;$('.wnx-redo').disabled=!redo.length;draw();updateBadges();updateDashboard();\n  }\n\n  function choose(pool){const total=pool.reduce((s,e)=>s+e.weight,0);let n=randomInt(total),used=0;for(let i=0;i<pool.length;i++){used+=pool[i].weight;if(n<used)return i;}return pool.length-1;}\n  async function sha256(text){const bytes=new TextEncoder().encode(text),hash=await crypto.subtle.digest('SHA-256',bytes);return[...new Uint8Array(hash)].map(v=>v.toString(16).padStart(2,'0')).join('');}\n  async function createReceipt(selected){\n    const payload={version:2,site:location.origin,page:location.pathname,timestamp:new Date().toISOString(),spinNumber,result:selected.map(e=>e.name),entries:preSpin,entryImages:selected.map(e=>({name:e.name,hasImage:Boolean(e.image)})),backgroundImage:Boolean(backgroundImage),centerImage:Boolean(centerImage),smartFairRotation:balance.checked,cooldownSpins:Number(cooldown.value),elimination:elimination.checked,accumulation:accumulation.checked,autoSpin:auto.checked};\n    const hash=await sha256(JSON.stringify(payload));lastReceipt={...payload,sha256:hash,receiptId:'WNR-'+hash.slice(0,16).toUpperCase()};\n    $('.wnx-receipt-id').textContent=lastReceipt.receiptId;$('.wnx-copy-receipt').disabled=false;$('.wnx-download-receipt').disabled=false;\n  }\n\n  function finish(selected){\n    spinNumber++;selected.forEach(e=>{e.count++;e.last=spinNumber;});\n    const time=new Date().toLocaleTimeString();history.unshift(`${time} \u2014 ${selected.map(e=>e.name).join(', ')}`);\n    $('.wnx-history').innerHTML=history.map(v=>`<li>${escapeHtml(v)}<\/li>`).join('');$('.wnx-empty').classList.toggle('wnx-hidden',history.length>0);\n    result.textContent=(selected.length>1?'Winners: ':'Winner: ')+selected.map(e=>e.name+(accumulation.checked?` (${e.count})`:'')).join(', ');\n    createReceipt(selected);\n    if(elimination.checked){save();const set=new Set(selected);entries=entries.filter(e=>!set.has(e));render();}else{draw();updateDashboard();updateBadges();}\n    busy=false;spin.disabled=false;if(auto.checked&&entries.length)setTimeout(startSpin,1200);\n  }\n\n  function startSpin(){if(busy||!entries.length){if(!entries.length)result.textContent='Add at least one entry.';return;}busy=true;spin.disabled=true;preSpin=entries.map(e=>({name:e.name,weight:e.weight,hasImage:Boolean(e.image)}));let base=eligibleEntries();if(mode==='multi'&&base.length<Math.max(1,Number(winnerCount.value)||1))base=[...entries];const pool=[...base],selected=[],wanted=Math.min(pool.length,Math.max(1,Number(winnerCount.value)||1));for(let i=0;i<wanted;i++){const index=choose(pool);selected.push(pool[index]);pool.splice(index,1);}const segs=segments(),targetIndex=entries.indexOf(selected[0]),middle=(segs[targetIndex].start+segs[targetIndex].end)\/2,target=-Math.PI\/2-middle,start=angle,reverseTurns=2+randomInt(2),forwardTurns=5+randomInt(3),ms=Math.max(1,Number(duration.value)||15)*1000,reverseMs=Math.min(ms*.28,4200),startTime=performance.now(),reverseEnd=start-reverseTurns*Math.PI*2,forwardDelta=((target-reverseEnd)%(Math.PI*2)+Math.PI*2)%(Math.PI*2)+forwardTurns*Math.PI*2;let lastPaint=0;function frame(now){const elapsed=now-startTime,progress=Math.min(1,elapsed\/ms);let nextAngle;if(elapsed<reverseMs){const p=Math.min(1,elapsed\/reverseMs),ease=1-Math.pow(1-p,3);nextAngle=start-reverseTurns*Math.PI*2*ease;}else{const p=Math.min(1,(elapsed-reverseMs)\/Math.max(1,ms-reverseMs)),ease=1-Math.pow(1-p,5);nextAngle=reverseEnd+forwardDelta*ease;}if(isHomepage||progress>=1||now-lastPaint>=22){angle=nextAngle;draw();lastPaint=now;}if(progress<1)requestAnimationFrame(frame);else{angle=target;draw();finish(selected);}}requestAnimationFrame(frame);}\n  spin.onclick=startSpin;canvas.onclick=startSpin;canvas.tabIndex=0;canvas.onkeydown=e=>{if(e.key==='Enter'||e.key===' '){e.preventDefault();startSpin();}};\n  $('.wnx-add-button').onclick=()=>{const input=$('.wnx-new-entry'),value=input.value.trim();if(!value)return;save();entries.push({name:value,weight:1,count:0,last:-999,image:''});input.value='';render();};\n  $('.wnx-new-entry').onkeydown=e=>{if(e.key==='Enter')$('.wnx-add-button').click();};\n  $('.wnx-apply').onclick=()=>{const values=$('.wnx-bulk').value.split(\/\\n|,\/).map(v=>v.trim()).filter(Boolean);if(!values.length)return;save();entries=values.map(name=>({name,weight:1,count:0,last:-999,image:''}));spinNumber=0;render();};\n  $('.wnx-file').onchange=e=>{const file=e.target.files?.[0];if(!file)return;const reader=new FileReader();reader.onload=()=>{$('.wnx-bulk').value=String(reader.result||'').replace(\/,\/g,'\\n');};reader.readAsText(file);};\n  $('.wnx-shuffle').onclick=()=>{save();for(let i=entries.length-1;i>0;i--){const j=randomInt(i+1);[entries[i],entries[j]]=[entries[j],entries[i]];}render();};\n  $('.wnx-clear').onclick=()=>{save();entries=[];spinNumber=0;render();};\n  $('.wnx-undo').onclick=()=>{if(!undo.length)return;redo.push(snapshot());entries=JSON.parse(undo.pop());render();};\n  $('.wnx-redo').onclick=()=>{if(!redo.length)return;undo.push(snapshot());entries=JSON.parse(redo.pop());render();};\n\n  list.onclick=e=>{const button=e.target.closest('[data-act]');if(!button)return;save();const index=Number(button.dataset.i),action=button.dataset.act;if(action==='remove')entries.splice(index,1);if(action==='plus')entries[index].weight++;if(action==='minus')entries[index].weight=Math.max(1,entries[index].weight-1);render();};\n  list.onchange=e=>{if(!e.target.matches('[data-edit]'))return;save();entries[Number(e.target.dataset.edit)].name=e.target.value.trim()||'Untitled';render();};\n\n  $('.wnx-bg-file').onchange=async e=>{const file=e.target.files?.[0];if(!file)return;try{backgroundImage=await readOptimizedImage(file,1200);$('.wnx-bg-status').textContent=file.name;$('.wnx-remove-bg').disabled=false;draw();}catch(err){$('.wnx-bg-status').textContent=err.message;}};\n  $('.wnx-bg-opacity').oninput=e=>{backgroundOpacity=Number(e.target.value)\/100;draw();};\n  $('.wnx-remove-bg').onclick=()=>{backgroundImage='';backgroundOpacity=.9;$('.wnx-bg-opacity').value='90';$('.wnx-bg-file').value='';$('.wnx-bg-status').textContent='No image selected';$('.wnx-remove-bg').disabled=true;draw();};\n\n  $('.wnx-center-file').onchange=async e=>{const file=e.target.files?.[0];if(!file)return;try{centerImage=await readOptimizedImage(file,600);$('.wnx-center-status').textContent=file.name;$('.wnx-remove-center').disabled=false;draw();}catch(err){$('.wnx-center-status').textContent=err.message;}};\n  $('.wnx-center-size').oninput=e=>{centerRadius=Number(e.target.value);draw();};\n  $('.wnx-remove-center').onclick=()=>{centerImage='';$('.wnx-center-file').value='';$('.wnx-center-status').textContent='No image selected';$('.wnx-remove-center').disabled=true;draw();};\n\n  $('.wnx-entry-image-file').onchange=async e=>{const file=e.target.files?.[0];if(!file)return;try{pendingEntryImage=await readOptimizedImage(file,650);pendingEntryFilename=file.name.replace(\/.[^.]+$\/,'');const preview=$('.wnx-entry-image-preview');preview.querySelector('img').src=pendingEntryImage;preview.querySelector('span').textContent=file.name;preview.hidden=false;$('.wnx-add-image-entry').disabled=false;}catch(err){result.textContent=err.message;}};\n  $('.wnx-add-image-entry').onclick=()=>{if(!pendingEntryImage)return;const label=$('.wnx-image-entry-name').value.trim()||pendingEntryFilename||'Image entry';save();entries.push({name:label,weight:1,count:0,last:-999,image:pendingEntryImage});pendingEntryImage='';pendingEntryFilename='';$('.wnx-image-entry-name').value='';$('.wnx-entry-image-file').value='';$('.wnx-entry-image-preview').hidden=true;$('.wnx-add-image-entry').disabled=true;render();};\n  $('.wnx-reset-images').onclick=()=>{backgroundImage='';centerImage='';pendingEntryImage='';entries.forEach(e=>e.image='');$('.wnx-bg-file').value='';$('.wnx-center-file').value='';$('.wnx-entry-image-file').value='';$('.wnx-bg-status').textContent='No image selected';$('.wnx-center-status').textContent='No image selected';$('.wnx-remove-bg').disabled=true;$('.wnx-remove-center').disabled=true;$('.wnx-add-image-entry').disabled=true;$('.wnx-entry-image-preview').hidden=true;render();};\n\n  duration.oninput=()=>{$('.wnx-duration-text').textContent=duration.value;};\n  [elimination,accumulation,auto,balance,cooldown].forEach(control=>control.onchange=()=>{updateBadges();updateDashboard();draw();});\n  $('.wnx-smart-reset').onclick=()=>{entries.forEach(e=>{e.count=0;e.last=-999;});spinNumber=0;lastReceipt=null;$('.wnx-receipt-id').textContent='No receipt yet';$('.wnx-copy-receipt').disabled=true;$('.wnx-download-receipt').disabled=true;render();};\n\n  $('.wnx-hide-panel').onclick=()=>{const panel=$('.wnx-panel');panel.classList.toggle('wnx-hidden');$('.wnx-hide-panel').textContent=panel.classList.contains('wnx-hidden')?'Show Panel':'Hide Panel';};\n  $('.wnx-fullscreen').onclick=()=>r.requestFullscreen?.();\n  $('.wnx-export').onclick=()=>{const csv='entry,weight,count,has_image\\n'+entries.map(e=>`\"${e.name.replace(\/\"\/g,'\"\"')}\",${e.weight},${e.count},${e.image?'yes':'no'}`).join('\\n'),a=document.createElement('a');a.href=URL.createObjectURL(new Blob([csv],{type:'text\/csv'}));a.download='wheel-entries.csv';a.click();setTimeout(()=>URL.revokeObjectURL(a.href),1000);};\n  $('.wnx-share').onclick=async()=>{const url=new URL(location.href);url.searchParams.set('wnitems',entries.map(e=>encodeURIComponent(e.name)+(e.weight>1?'|'+e.weight:'')).join('~'));elimination.checked?url.searchParams.set('wnremove','1'):url.searchParams.delete('wnremove');try{await navigator.clipboard.writeText(url);result.textContent=entries.some(e=>e.image)||backgroundImage||centerImage?'Share link copied. Images stay in this browser session.':'Share link copied.';}catch(e){result.textContent=url;}};\n\n  $('.wnx-copy-receipt').onclick=async()=>{if(!lastReceipt)return;const text=`${lastReceipt.receiptId}\\nWinner: ${lastReceipt.result.join(', ')}\\nTime: ${lastReceipt.timestamp}\\nSHA-256: ${lastReceipt.sha256}`;try{await navigator.clipboard.writeText(text);$('.wnx-copy-receipt').textContent='Copied';setTimeout(()=>$('.wnx-copy-receipt').textContent='Copy Receipt',1200);}catch(e){$('.wnx-receipt-id').textContent=text;}};\n  $('.wnx-download-receipt').onclick=()=>{if(!lastReceipt)return;const report={receipt:lastReceipt,balanceScore:balanceScore()+'%',selectionCounts:Object.fromEntries(entries.map(e=>[e.name,e.count]))},a=document.createElement('a');a.href=URL.createObjectURL(new Blob([JSON.stringify(report,null,2)],{type:'application\/json'}));a.download=lastReceipt.receiptId+'.json';a.click();setTimeout(()=>URL.revokeObjectURL(a.href),1000);};\n\n  const activateTab=button=>{const pane=$(`.wnx-pane[data-pane=\"${button.dataset.tab}\"]`);if(!pane)return;$$('.wnx-tab').forEach(x=>x.classList.remove('is-active'));$$('.wnx-pane').forEach(x=>x.classList.remove('is-active'));button.classList.add('is-active');pane.classList.add('is-active');if(button.dataset.tab==='smart')updateDashboard();};\n  if(isHomepage){$$('.wnx-tab').forEach(button=>button.onclick=()=>activateTab(button));}\n  else{\n    const nativeTabs=new Set(['entries','design','images','smart','history']),tabBar=$('.wnx-tabs');\n    tabBar.addEventListener('click',event=>{const button=event.target.closest('.wnx-tab');if(!button||!nativeTabs.has(button.dataset.tab))return;event.preventDefault();event.stopImmediatePropagation();activateTab(button);},{capture:true,passive:false});\n  }\n  const paletteNames=isHomepage?['Original palette','Classic palette','Sunset palette','Ocean palette']:['Tool theme','Unique theme','Classic palette','Sunset palette','Ocean palette'];\n  palettes.forEach((palette,index)=>{const button=document.createElement('button');button.type='button';button.className='wnx-palette'+(index?'':' is-active');button.style.background=`linear-gradient(135deg,${palette.join(',')})`;button.setAttribute('aria-label',paletteNames[index]||`Palette ${index+1}`);button.setAttribute('aria-pressed',String(index===0));button.onclick=()=>{colors=palette.slice();$$('.wnx-palette').forEach(x=>{x.classList.remove('is-active');x.setAttribute('aria-pressed','false')});button.classList.add('is-active');button.setAttribute('aria-pressed','true');draw();result.textContent='Palette applied.';};$('.wnx-palettes').append(button);});\n\n  render();\n})();\n<\/script>\n<\/section>\n<script id=\"wnx-tab-recovery-v1\">\n(function () {\n  if (document.body.classList.contains('page-id-10') || location.pathname === '\/') return;\n  if (window.__wnxTabRecoveryV1) return;\n  window.__wnxTabRecoveryV1 = true;\n\n  document.addEventListener('click', function (event) {\n    var button = event.target.closest && event.target.closest('.wnx-spinner .wnx-tab');\n    if (!button) return;\n\n    var panel = button.closest('.wnx-panel');\n    var key = button.getAttribute('data-tab');\n    if (!panel || !key) return;\n\n    var panes = Array.prototype.slice.call(panel.querySelectorAll('.wnx-pane'));\n    var pane = panes.find(function (item) { return item.getAttribute('data-pane') === key; });\n    if (!pane) return;\n\n    Array.prototype.forEach.call(panel.querySelectorAll('.wnx-tab'), function (tab) {\n      var active = tab === button;\n      tab.classList.toggle('is-active', active);\n      tab.setAttribute('aria-selected', active ? 'true' : 'false');\n    });\n    panes.forEach(function (item) {\n      item.classList.toggle('is-active', item === pane);\n    });\n  }, true);\n}());\n<\/script>\n\n\n<main class=\"wn-page\" lang=\"pt-PT\">\n<section class=\"wn-section\" id=\"resposta\" aria-labelledby=\"resposta-titulo\">\n<h2 id=\"resposta-titulo\">O que \u00e9 uma roleta aleat\u00f3ria?<\/h2>\n<p><strong>Uma roleta aleat\u00f3ria \u00e9 uma roda digital que escolhe uma op\u00e7\u00e3o de uma lista.<\/strong> Pode funcionar como sorteador de nomes, gerador de n\u00fameros, roleta de letras, seletor de cores ou roda de decis\u00f5es. Cada op\u00e7\u00e3o aparece como uma fatia vis\u00edvel; ao girar, a ferramenta seleciona um resultado entre as entradas ativas.<\/p>\n<p>Esta p\u00e1gina corresponde \u00e0 inten\u00e7\u00e3o de quem procura uma <strong>roleta aleat\u00f3ria online<\/strong>: uma ferramenta pronta a utilizar, sem instala\u00e7\u00e3o, acompanhada de instru\u00e7\u00f5es claras sobre probabilidades, privacidade e utiliza\u00e7\u00f5es pr\u00e1ticas.<\/p>\n<\/section>\n\n<section class=\"wn-section\">\n<nav class=\"wn-toc\" aria-label=\"\u00cdndice da p\u00e1gina\">\n<strong>\u00cdndice: guia da roleta aleat\u00f3ria<\/strong>\n<ol>\n<li><a href=\"#como-usar\">Como usar<\/a><\/li>\n<li><a href=\"#tipos\">Tipos de roleta<\/a><\/li>\n<li><a href=\"#nomes\">Roleta de nomes<\/a><\/li>\n<li><a href=\"#numeros-letras-cores\">N\u00fameros, letras e cores<\/a><\/li>\n<li><a href=\"#decisoes\">Comida e sim ou n\u00e3o<\/a><\/li>\n<li><a href=\"#probabilidade\">Probabilidade e imparcialidade<\/a><\/li>\n<li><a href=\"#ideias\">Ideias de utiliza\u00e7\u00e3o<\/a><\/li>\n<li><a href=\"#faq\">Perguntas frequentes<\/a><\/li>\n<\/ol>\n<\/nav>\n<\/section>\n\n<section class=\"wn-section\" id=\"como-usar\">\n<h2>Como usar a roleta aleat\u00f3ria online<\/h2>\n<div class=\"wn-steps\">\n<div class=\"wn-step\"><h3>1. Adicione as op\u00e7\u00f5es<\/h3><p>Escreva uma entrada por linha ou cole uma lista completa. Pode inserir pessoas, equipas, tarefas, pr\u00e9mios, n\u00fameros, letras, cores, refei\u00e7\u00f5es ou respostas.<\/p><\/div>\n<div class=\"wn-step\"><h3>2. Reveja e personalize<\/h3><p>Remova duplicados involunt\u00e1rios, confirme a elegibilidade e ajuste as cores ou o tempo de rota\u00e7\u00e3o. Use op\u00e7\u00f5es curtas para que os r\u00f3tulos permane\u00e7am leg\u00edveis.<\/p><\/div>\n<div class=\"wn-step\"><h3>3. Gire e confirme<\/h3><p>Prima o bot\u00e3o de girar a roleta aleat\u00f3ria. A roda abranda, apresenta o resultado e permite iniciar uma nova ronda.<\/p><\/div>\n<\/div>\n<p>Num grupo, mostre a lista e explique previamente se o vencedor ser\u00e1 removido. Esta prepara\u00e7\u00e3o simples torna o processo mais transparente e evita d\u00favidas depois do resultado.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"tipos\">\n<h2>Tipos de roleta aleat\u00f3ria personalizada<\/h2>\n<div class=\"wn-grid\">\n<article class=\"wn-card\"><h3>Roleta padr\u00e3o<\/h3><p>Indicada para uma escolha independente. Todas as entradas ativas permanecem dispon\u00edveis depois de cada volta.<\/p><\/article>\n<article class=\"wn-card\"><h3>Roleta sem repeti\u00e7\u00e3o<\/h3><p>Remove o resultado selecionado, sendo \u00fatil para criar ordens, distribuir turnos ou escolher v\u00e1rios vencedores \u00fanicos.<\/p><\/article>\n<article class=\"wn-card\"><h3>Roleta ponderada<\/h3><p>Atribui pesos diferentes \u00e0s entradas quando as regras permitem probabilidades distintas. Um peso superior aumenta a hip\u00f3tese, mas n\u00e3o garante a escolha.<\/p><\/article>\n<article class=\"wn-card\"><h3>Roleta de v\u00e1rios vencedores<\/h3><p>Escolhe mais de um resultado numa ronda e ajuda em passatempos, equipas, pr\u00e9mios ou listas de participa\u00e7\u00e3o.<\/p><\/article>\n<\/div>\n<p>Para criar uma <strong>roleta aleat\u00f3ria personalizada<\/strong>, escolha o modo de acordo com o objetivo. N\u00e3o repita op\u00e7\u00f5es para aumentar a probabilidade sem informar os participantes.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"nomes\">\n<h2>Roleta aleat\u00f3ria de nomes<\/h2>\n<p>A <strong>roleta aleat\u00f3ria de nomes<\/strong> transforma uma lista de pessoas numa escolha visual. \u00c9 adequada para selecionar um aluno, definir a ordem de apresenta\u00e7\u00f5es, escolher quem come\u00e7a um jogo, distribuir tarefas ou sortear um participante.<\/p>\n<p>Antes de girar, verifique a grafia e elimine nomes repetidos, ausentes ou n\u00e3o eleg\u00edveis. Se a mesma pessoa n\u00e3o puder voltar a ser escolhida, ative a elimina\u00e7\u00e3o depois de cada resultado. Para utiliza\u00e7\u00e3o p\u00fablica, evite dados pessoais sens\u00edveis; nomes curtos ou identificadores previamente acordados costumam ser suficientes.<\/p>\n<h3>Roleta de nomes para aulas e equipas<\/h3>\n<p>Professores podem escolher participantes, perguntas, grupos, responsabilidades ou temas de trabalho. Em reuni\u00f5es, a roda pode definir o moderador, o respons\u00e1vel pelas notas ou a ordem de interven\u00e7\u00e3o. A sele\u00e7\u00e3o deve apoiar atividades de baixo risco e n\u00e3o substituir crit\u00e9rios de acessibilidade, avalia\u00e7\u00e3o ou gest\u00e3o de pessoas.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"numeros-letras-cores\">\n<h2>Roleta aleat\u00f3ria de n\u00fameros, letras e cores<\/h2>\n<div class=\"wn-grid\">\n<article class=\"wn-card wide\"><h3>Roleta aleat\u00f3ria de n\u00fameros<\/h3><p>Adicione n\u00fameros de rifas, lugares, perguntas, equipas ou valores de um intervalo. Uma roleta de n\u00fameros oferece uma alternativa visual a um gerador num\u00e9rico e permite que todos acompanhem o sorteio.<\/p><\/article>\n<article class=\"wn-card wide\"><h3>Roleta aleat\u00f3ria de letras<\/h3><p>Use o alfabeto completo ou apenas letras espec\u00edficas para jogos de palavras, vocabul\u00e1rio, escrita criativa e alfabetiza\u00e7\u00e3o. A letra sorteada pode definir um nome, pa\u00eds, animal, objeto ou tema.<\/p><\/article>\n<article class=\"wn-card wide\"><h3>Roleta aleat\u00f3ria de cores<\/h3><p>Inclua cores para escolher equipas, materiais, paletas, personagens ou temas visuais. Prefira nomes claros e contraste suficiente para facilitar a leitura.<\/p><\/article>\n<\/div>\n<p>Quer procure uma <strong>roleta aleat\u00f3ria n\u00fameros<\/strong>, uma <strong>letra aleat\u00f3ria na roleta<\/strong> ou uma <strong>roleta de cores<\/strong>, a l\u00f3gica \u00e9 igual: s\u00f3 as op\u00e7\u00f5es vis\u00edveis e ativas entram na sele\u00e7\u00e3o.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"decisoes\">\n<h2>Roleta de comida aleat\u00f3ria e roleta sim ou n\u00e3o<\/h2>\n<h3>Roleta de comida aleat\u00f3ria<\/h3>\n<p>Quando o grupo n\u00e3o consegue decidir onde comer, crie uma <strong>roleta de comida aleat\u00f3ria<\/strong> com pratos, restaurantes ou tipos de cozinha. Remova primeiro op\u00e7\u00f5es incompat\u00edveis com alergias, or\u00e7amento, hor\u00e1rio ou dist\u00e2ncia. Depois, deixe a roda escolher entre as alternativas realmente v\u00e1lidas.<\/p>\n<h3>Roleta aleat\u00f3ria: sim ou n\u00e3o<\/h3>\n<p>Uma <strong>roleta aleat\u00f3ria sim ou n\u00e3o<\/strong> \u00e9 \u00fatil para jogos e decis\u00f5es leves com duas respostas. Para uma hip\u00f3tese igual, adicione \u201cSim\u201d e \u201cN\u00e3o\u201d uma vez cada. Tamb\u00e9m pode usar \u201cTalvez\u201d, \u201cVoltar a tentar\u201d ou outras respostas, desde que a regra seja clara.<\/p>\n<p>N\u00e3o utilize o acaso para decis\u00f5es m\u00e9dicas, jur\u00eddicas, financeiras, de seguran\u00e7a ou com efeitos importantes sobre outras pessoas.<\/p>\n<h3>Sobre a pesquisa \u201croleta russa aleat\u00f3ria\u201d<\/h3>\n<p>Nesta ferramenta, essa express\u00e3o refere-se exclusivamente a uma din\u00e2mica virtual de jogos, na qual uma op\u00e7\u00e3o ou desafio seguro \u00e9 selecionado. N\u00e3o envolve armas nem comportamentos perigosos.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"probabilidade\">\n<h2>Como funciona a probabilidade da roleta aleat\u00f3ria?<\/h2>\n<p>No modo padr\u00e3o, cada entrada ativa tem a mesma hip\u00f3tese de ser escolhida. Com 10 op\u00e7\u00f5es v\u00e1lidas, cada uma tem uma probabilidade de 1 em 10, ou 10%, nessa volta. Se o vencedor for removido, as hip\u00f3teses s\u00e3o recalculadas para a ronda seguinte.<\/p>\n<table class=\"wn-table\">\n<thead><tr><th>Modo<\/th><th>C\u00e1lculo<\/th><th>Melhor utiliza\u00e7\u00e3o<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><strong>Padr\u00e3o<\/strong><\/td><td>1 \u00f7 n\u00famero de entradas ativas<\/td><td>Uma escolha aleat\u00f3ria independente<\/td><\/tr>\n<tr><td><strong>Elimina\u00e7\u00e3o<\/strong><\/td><td>Recalculado ap\u00f3s remover o resultado<\/td><td>Ordem sem repeti\u00e7\u00f5es<\/td><\/tr>\n<tr><td><strong>Ponderado<\/strong><\/td><td>Peso da entrada \u00f7 soma dos pesos<\/td><td>Probabilidades diferentes e declaradas<\/td><\/tr>\n<\/tbody>\n<\/table>\n<h3>Imparcialidade, transpar\u00eancia e fonte aleat\u00f3ria<\/h3>\n<p>A roda utiliza valores aleat\u00f3rios gerados pelo navegador para mapear o resultado \u00e0s entradas ativas. Pode consultar a documenta\u00e7\u00e3o t\u00e9cnica da <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Crypto\/getRandomValues\">API Crypto.getRandomValues() no MDN Web Docs<\/a>. Este \u00e9 um link editorial para uma refer\u00eancia t\u00e9cnica independente e abre normalmente na mesma janela.<\/p>\n<p>Para um sorteio transparente, limpe a lista, mostre as regras, confirme o modo selecionado e guarde o hist\u00f3rico quando necess\u00e1rio. Passatempos regulamentados podem exigir termos, auditoria ou sistemas certificados adicionais.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"ideias\">\n<h2>Ideias para girar a roleta aleat\u00f3ria<\/h2>\n<div class=\"wn-grid\">\n<article class=\"wn-card\"><h3>Educa\u00e7\u00e3o<\/h3><p>Escolher alunos, perguntas, letras, temas, equipas, esta\u00e7\u00f5es de aprendizagem e ordem de apresenta\u00e7\u00e3o.<\/p><\/article>\n<article class=\"wn-card\"><h3>Trabalho<\/h3><p>Rodar tarefas leves, moderadores, quebra-gelos, t\u00f3picos de reuni\u00e3o e ordem de participa\u00e7\u00e3o.<\/p><\/article>\n<article class=\"wn-card\"><h3>Jogos e festas<\/h3><p>Selecionar desafios seguros, jogadores, pr\u00e9mios, personagens, m\u00fasicas, filmes ou atividades.<\/p><\/article>\n<article class=\"wn-card\"><h3>Dia a dia<\/h3><p>Escolher comida, destino, cor, tarefa dom\u00e9stica ou uma op\u00e7\u00e3o entre alternativas equivalentes.<\/p><\/article>\n<\/div>\n<h3>Como obter resultados claros<\/h3>\n<ul>\n<li>Inclua apenas entradas v\u00e1lidas e relevantes.<\/li>\n<li>Remova duplicados, espa\u00e7os vazios e varia\u00e7\u00f5es do mesmo nome.<\/li>\n<li>Defina antes se haver\u00e1 repeti\u00e7\u00e3o ou elimina\u00e7\u00e3o.<\/li>\n<li>Explique qualquer peso ou vantagem atribu\u00edda a uma op\u00e7\u00e3o.<\/li>\n<li>N\u00e3o introduza palavras-passe, moradas, dados m\u00e9dicos ou outras informa\u00e7\u00f5es sens\u00edveis.<\/li>\n<\/ul>\n<\/section>\n\n<section class=\"wn-section\" id=\"roda-aleatoria\">\n<h2>A roda de nomes \u00e9 realmente aleat\u00f3ria?<\/h2>\n<p>A anima\u00e7\u00e3o da roda \u00e9 apenas visual: o resultado \u00e9 decidido por um gerador de n\u00fameros aleat\u00f3rios (RNG) que corre diretamente no teu navegador. Cada giro \u00e9 totalmente independente \u2014 a roda de nomes n\u00e3o &#8220;recorda&#8221; resultados anteriores, n\u00e3o favorece nenhum nome e n\u00e3o tem nenhum peso escondido. Quando carregas em girar, o algoritmo escolhe ao acaso um dos segmentos e a roda abranda exatamente sobre esse resultado. Como tudo acontece no teu pr\u00f3prio dispositivo, n\u00e3o existe qualquer interfer\u00eancia externa no sorteio. \u00c9 por isso que a nossa roleta aleat\u00f3ria \u00e9 usada em salas de aula, sorteios p\u00fablicos e decis\u00f5es de equipa: cada participante tem sempre exatamente a mesma probabilidade de sair, giro ap\u00f3s giro.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"onde-usar\">\n<h2>Onde usar a roda de nomes: ideias e casos de uso<\/h2>\n<p>A roda de nomes adapta-se a quase qualquer decis\u00e3o r\u00e1pida. Eis os cen\u00e1rios mais populares:<\/p>\n<h3>Na sala de aula<\/h3>\n<p>Os professores usam a roda de nomes para sortear alunos, definir a ordem das apresenta\u00e7\u00f5es ou formar grupos de forma imparcial. Torna a participa\u00e7\u00e3o mais justa e muito mais divertida.<\/p>\n<h3>Em equipas e turnos<\/h3>\n<p>Distribui tarefas, sorteia turnos ou escolhe quem apresenta primeiro. Uma roda de nomes elimina discuss\u00f5es e garante transpar\u00eancia em qualquer equipa.<\/p>\n<h3>Em lives e redes sociais<\/h3>\n<p>Streamers e criadores usam a roleta em lives no Instagram, TikTok ou Twitch (com OBS) para sortear vencedores de giveaways em tempo real.<\/p>\n<h3>Decis\u00f5es do dia a dia<\/h3>\n<p>Onde jantar, que filme ver, quem lava a lou\u00e7a \u2014 deixa a roleta de nomes decidir quando ningu\u00e9m se entende.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"recursos-avancados\">\n<h2>Recursos avan\u00e7ados da roleta de nomes<\/h2>\n<p>A nossa roleta de nomes vai muito al\u00e9m do giro b\u00e1sico. O modo de elimina\u00e7\u00e3o remove automaticamente o nome sorteado, perfeito para torneios e sorteios sem repeti\u00e7\u00e3o. Importa listas longas de uma s\u00f3 vez colando texto ou carregando um ficheiro CSV, sem limites pr\u00e1ticos. Gera um link partilh\u00e1vel para mostrar a tua roda personalizada a outras pessoas. Personaliza as cores, os sons e o ritmo do giro ao teu gosto, para uma experi\u00eancia \u00e0 medida. E porque a roda corre no navegador, tudo isto \u00e9 instant\u00e2neo \u2014 sem instala\u00e7\u00f5es, sem registo e sem esperas.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"sorteio-tradicional\">\n<h2>Roda de nomes ou sorteio tradicional: qual \u00e9 melhor?<\/h2>\n<p>O sorteio com pap\u00e9is na caixa tem charme, mas \u00e9 lento, pouco transparente e f\u00e1cil de manipular. Com uma roda de nomes online, o processo \u00e9 instant\u00e2neo, vis\u00edvel para todos e repet\u00edvel \u00e0 vontade: ningu\u00e9m precisa de preparar pap\u00e9is, recortar e baralhar. Toda a gente v\u00ea a roda a girar no ecr\u00e3 e pode confiar no resultado. Al\u00e9m disso, podes reutilizar listas, importar nomes de ficheiros e partilhar o sorteio com um link. Para decis\u00f5es r\u00e1pidas em aula, no trabalho ou em direto numa live, a roda de nomes substitui o m\u00e9todo tradicional com mais rapidez, mais justi\u00e7a e muito mais divers\u00e3o.<\/p>\n<\/section>\n\n<section class=\"wn-section\" id=\"faq\">\n<h2>Perguntas frequentes sobre a roleta aleat\u00f3ria<\/h2>\n<div class=\"wn-faq\">\n<details><summary>A roleta aleat\u00f3ria online \u00e9 gratuita?<\/summary><p>Sim. Pode utilizar a roda gratuitamente no navegador, sem instalar uma aplica\u00e7\u00e3o e sem criar uma conta.<\/p><\/details>\n<details><summary>Como criar uma roleta aleat\u00f3ria de nomes?<\/summary><p>Introduza um nome por linha, confirme a lista, escolha as defini\u00e7\u00f5es e gire. Ative a elimina\u00e7\u00e3o se cada pessoa s\u00f3 puder ser selecionada uma vez.<\/p><\/details>\n<details><summary>Posso sortear n\u00fameros, letras e cores?<\/summary><p>Sim. A roda aceita texto, por isso pode adicionar n\u00fameros, letras, cores ou uma combina\u00e7\u00e3o de op\u00e7\u00f5es.<\/p><\/details>\n<details><summary>A roleta funciona no telem\u00f3vel?<\/summary><p>Sim. O seletor adapta-se a telem\u00f3veis, tablets, port\u00e1teis e computadores de secret\u00e1ria com um navegador moderno.<\/p><\/details>\n<details><summary>\u00c9 poss\u00edvel impedir resultados repetidos?<\/summary><p>Sim. Utilize o modo de elimina\u00e7\u00e3o para remover automaticamente a entrada escolhida antes da ronda seguinte.<\/p><\/details>\n<details><summary>A roleta pode ser usada num sorteio oficial?<\/summary><p>A ferramenta \u00e9 indicada para entretenimento, aulas e escolhas informais. Um sorteio regulamentado pode exigir regras p\u00fablicas, auditoria ou um sistema certificado.<\/p><\/details>\n<details><summary>Os nomes introduzidos s\u00e3o dados pessoais?<\/summary><p>Podem ser. Use apenas a informa\u00e7\u00e3o necess\u00e1ria, evite dados sens\u00edveis e obtenha autoriza\u00e7\u00e3o quando a lista for mostrada publicamente.<\/p><\/details>\n<details><summary>Preciso de criar uma conta para usar a roleta?<\/summary><p>N\u00e3o. A nossa roda de nomes \u00e9 100% gratuita e funciona sem registo. Basta abrir a p\u00e1gina, escrever os nomes e carregar em girar. N\u00e3o h\u00e1 contas, subscri\u00e7\u00f5es nem limites ocultos \u2014 podes usar a roleta quantas vezes quiseres, no telem\u00f3vel ou no computador.<\/p><\/details>\n<details><summary>A roda de nomes guarda os meus dados?<\/summary><p>N\u00e3o guardamos nada. Todos os nomes que introduzires na roda de nomes ficam apenas no teu navegador e nunca s\u00e3o enviados para os nossos servidores. Quando fechas a p\u00e1gina, os dados desaparecem. A tua privacidade est\u00e1 garantida, mesmo em sorteios com nomes de alunos ou colegas.<\/p><\/details>\n<details><summary>Posso usar a roleta de nomes no telem\u00f3vel?<\/summary><p>Sim. A roleta de nomes foi desenhada para funcionar perfeitamente no telem\u00f3vel, no tablet e no computador. N\u00e3o precisas de instalar nenhuma aplica\u00e7\u00e3o: abre o navegador, adiciona os nomes e gira. \u00c9 ideal para usar na sala de aula, no escrit\u00f3rio ou em direto nas redes sociais.<\/p><\/details>\n<details><summary>Quantos nomes posso adicionar \u00e0 roda?<\/summary><p>Podes adicionar centenas de nomes sem problemas. A roda de nomes aguenta listas longas \u2014 basta colar o texto ou importar um ficheiro CSV. Para listas muito grandes, os nomes aparecem automaticamente organizados na roda para manteres o giro leg\u00edvel e fluido.<\/p><\/details>\n<details><summary>Posso partilhar a minha roda com outras pessoas?<\/summary><p>Sim. Depois de personalizares a tua roda de nomes, podes gerar um link partilh\u00e1vel para enviar por WhatsApp, e-mail ou redes sociais. Quem abrir o link v\u00ea a roda exatamente como a configuraste, pronta a girar. \u00c9 perfeito para sorteios em direto e decis\u00f5es de equipa \u00e0 dist\u00e2ncia.<\/p><\/details>\n<\/div>\n<\/section>\n\n<section class=\"wn-section\" id=\"conclusao\">\n<h2>Crie a sua roleta aleat\u00f3ria agora<\/h2>\n<p>Adicione as op\u00e7\u00f5es, reveja a lista e gire a roda. Seja para uma <strong>roleta aleat\u00f3ria de nomes<\/strong>, n\u00fameros, letras, cores, comida ou uma decis\u00e3o simples, ter\u00e1 uma escolha r\u00e1pida, vis\u00edvel e f\u00e1cil de compreender.<\/p>\n<\/section>\n<\/main>\n<!-- \/wp:post-content -->\n\n<!-- wp:html -->\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebApplication\",\"name\":\"Roleta Aleat\u00f3ria Online\",\"url\":\"https:\/\/wheelnames.org\/pt-pt\/\",\"description\":\"Roleta aleat\u00f3ria online gratuita para sortear nomes, n\u00fameros, letras, cores e decis\u00f5es.\",\"applicationCategory\":\"UtilitiesApplication\",\"operatingSystem\":\"Any\",\"browserRequirements\":\"Requer JavaScript e um navegador moderno\",\"inLanguage\":\"pt-PT\",\"isAccessibleForFree\":true,\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"}},{\"@type\":\"FAQPage\",\"inLanguage\":\"pt-PT\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"A roleta aleat\u00f3ria online \u00e9 gratuita?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sim. Pode utilizar a roda gratuitamente no navegador, sem instalar uma aplica\u00e7\u00e3o e sem criar uma conta.\"}},{\"@type\":\"Question\",\"name\":\"Como criar uma roleta aleat\u00f3ria de nomes?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Introduza um nome por linha, confirme a lista, escolha as defini\u00e7\u00f5es e gire. Ative a elimina\u00e7\u00e3o se cada pessoa s\u00f3 puder ser selecionada uma vez.\"}},{\"@type\":\"Question\",\"name\":\"Posso sortear n\u00fameros, letras e cores?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sim. A roda aceita texto, por isso pode adicionar n\u00fameros, letras, cores ou uma combina\u00e7\u00e3o de op\u00e7\u00f5es.\"}},{\"@type\":\"Question\",\"name\":\"A roleta funciona no telem\u00f3vel?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sim. O seletor adapta-se a telem\u00f3veis, tablets, port\u00e1teis e computadores de secret\u00e1ria com um navegador moderno.\"}},{\"@type\":\"Question\",\"name\":\"\u00c9 poss\u00edvel impedir resultados repetidos?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sim. Utilize o modo de elimina\u00e7\u00e3o para remover automaticamente a entrada escolhida antes da ronda seguinte.\"}},{\"@type\":\"Question\",\"name\":\"A roleta pode ser usada num sorteio oficial?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A ferramenta \u00e9 indicada para entretenimento, aulas e escolhas informais. Um sorteio regulamentado pode exigir regras p\u00fablicas, auditoria ou um sistema certificado.\"}},{\"@type\":\"Question\",\"name\":\"Os nomes introduzidos s\u00e3o dados pessoais?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Podem ser. Use apenas a informa\u00e7\u00e3o necess\u00e1ria, evite dados sens\u00edveis e obtenha autoriza\u00e7\u00e3o quando a lista for mostrada publicamente.\"}}]}]}\n<\/script>\n<!-- \/wp:html --><!-- wp:html -->\n<script>\n(function(){if(window.__wnxPageTabRecovery)return;window.__wnxPageTabRecovery=true;document.addEventListener('click',function(event){var button=event.target.closest&&event.target.closest('.wnx-spinner .wnx-tab');if(!button)return;var panel=button.closest('.wnx-panel'),key=button.getAttribute('data-tab');if(!panel||!key)return;var panes=Array.prototype.slice.call(panel.querySelectorAll('.wnx-pane')),pane=panes.find(function(item){return item.getAttribute('data-pane')===key;});if(!pane)return;Array.prototype.forEach.call(panel.querySelectorAll('.wnx-tab'),function(tab){var active=tab===button;tab.classList.toggle('is-active',active);tab.setAttribute('aria-selected',active?'true':'false');});panes.forEach(function(item){item.classList.toggle('is-active',item===pane);});},true);}());\n<\/script>\n<!-- \/wp:html --><!-- \/wp:html -->","protected":false},"excerpt":{"rendered":"<p>Gr\u00e1tis, r\u00e1pida e sem registo Roleta de Nomes Online Gr\u00e1tis \u2014 Gira a Roda Aleat\u00f3ria Roleta aleat\u00f3ria gratuita para sortear nomes, n\u00fameros, letras, cores e decis\u00f5es. Adicione as suas op\u00e7\u00f5es, personalize a roda e gire para obter um resultado imediato, visual e imparcial. nomes e n\u00fameros sim ou n\u00e3o listas personalizadas telem\u00f3vel e computador O&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"hide","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-744","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.3 (Yoast SEO v28.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Roda de Nomes e Roleta Aleat\u00f3ria Online Gr\u00e1tis<\/title>\n<meta name=\"description\" content=\"Roda de nomes online gr\u00e1tis: gira a roleta aleat\u00f3ria e sorteia nomes, n\u00fameros e decis\u00f5es. Sem registo, funciona no telem\u00f3vel e no computador.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wheelnames.org\/pt-pt\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Roleta Aleat\u00f3ria Online Gr\u00e1tis | Wheel Names\" \/>\n<meta property=\"og:description\" content=\"Crie uma roleta aleat\u00f3ria personalizada para nomes, n\u00fameros, letras, cores e decis\u00f5es. Gr\u00e1tis, r\u00e1pida e f\u00e1cil de utilizar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wheelnames.org\/pt-pt\/\" \/>\n<meta property=\"og:site_name\" content=\"Wheel of Names\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-21T11:15:27+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Roleta Aleat\u00f3ria Online: Nomes, N\u00fameros e Decis\u00f5es\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/\",\"url\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/\",\"name\":\"Roda de Nomes e Roleta Aleat\u00f3ria Online Gr\u00e1tis\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/#website\"},\"datePublished\":\"2026-07-29T07:16:45+00:00\",\"dateModified\":\"2026-09-21T11:15:27+00:00\",\"description\":\"Roda de nomes online gr\u00e1tis: gira a roleta aleat\u00f3ria e sorteia nomes, n\u00fameros e decis\u00f5es. Sem registo, funciona no telem\u00f3vel e no computador.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Roleta Aleat\u00f3ria Online: Nomes, N\u00fameros e Decis\u00f5es\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/#website\",\"url\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/\",\"name\":\"Wheel of Names\",\"description\":\"Free Random Name Picker &amp; Spinner\",\"publisher\":{\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/#organization\"},\"alternateName\":\"Wheel Names Picker\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/#organization\",\"name\":\"Wheel of Names\",\"alternateName\":\"Wheel Names Picker\",\"url\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wheelnames.org\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/Wheel-of-Names.png\",\"contentUrl\":\"https:\\\/\\\/wheelnames.org\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/Wheel-of-Names.png\",\"width\":400,\"height\":180,\"caption\":\"Wheel of Names\"},\"image\":{\"@id\":\"https:\\\/\\\/wheelnames.org\\\/pt-pt\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Roda de Nomes e Roleta Aleat\u00f3ria Online Gr\u00e1tis","description":"Roda de nomes online gr\u00e1tis: gira a roleta aleat\u00f3ria e sorteia nomes, n\u00fameros e decis\u00f5es. Sem registo, funciona no telem\u00f3vel e no computador.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wheelnames.org\/pt-pt\/","og_locale":"pt_PT","og_type":"article","og_title":"Roleta Aleat\u00f3ria Online Gr\u00e1tis | Wheel Names","og_description":"Crie uma roleta aleat\u00f3ria personalizada para nomes, n\u00fameros, letras, cores e decis\u00f5es. Gr\u00e1tis, r\u00e1pida e f\u00e1cil de utilizar.","og_url":"https:\/\/wheelnames.org\/pt-pt\/","og_site_name":"Wheel of Names","article_modified_time":"2026-09-21T11:15:27+00:00","twitter_card":"summary_large_image","twitter_title":"Roleta Aleat\u00f3ria Online: Nomes, N\u00fameros e Decis\u00f5es","twitter_misc":{"Tempo estimado de leitura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wheelnames.org\/pt-pt\/","url":"https:\/\/wheelnames.org\/pt-pt\/","name":"Roda de Nomes e Roleta Aleat\u00f3ria Online Gr\u00e1tis","isPartOf":{"@id":"https:\/\/wheelnames.org\/pt-pt\/#website"},"datePublished":"2026-07-29T07:16:45+00:00","dateModified":"2026-09-21T11:15:27+00:00","description":"Roda de nomes online gr\u00e1tis: gira a roleta aleat\u00f3ria e sorteia nomes, n\u00fameros e decis\u00f5es. Sem registo, funciona no telem\u00f3vel e no computador.","breadcrumb":{"@id":"https:\/\/wheelnames.org\/pt-pt\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wheelnames.org\/pt-pt\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wheelnames.org\/pt-pt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wheelnames.org\/pt-pt\/"},{"@type":"ListItem","position":2,"name":"Roleta Aleat\u00f3ria Online: Nomes, N\u00fameros e Decis\u00f5es"}]},{"@type":"WebSite","@id":"https:\/\/wheelnames.org\/pt-pt\/#website","url":"https:\/\/wheelnames.org\/pt-pt\/","name":"Wheel of Names","description":"Free Random Name Picker &amp; Spinner","publisher":{"@id":"https:\/\/wheelnames.org\/pt-pt\/#organization"},"alternateName":"Wheel Names Picker","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wheelnames.org\/pt-pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/wheelnames.org\/pt-pt\/#organization","name":"Wheel of Names","alternateName":"Wheel Names Picker","url":"https:\/\/wheelnames.org\/pt-pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/wheelnames.org\/pt-pt\/#\/schema\/logo\/image\/","url":"https:\/\/wheelnames.org\/wp-content\/uploads\/2026\/07\/Wheel-of-Names.png","contentUrl":"https:\/\/wheelnames.org\/wp-content\/uploads\/2026\/07\/Wheel-of-Names.png","width":400,"height":180,"caption":"Wheel of Names"},"image":{"@id":"https:\/\/wheelnames.org\/pt-pt\/#\/schema\/logo\/image\/"}}]}},"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"Johan","author_link":"https:\/\/wheelnames.org\/pt-pt\/author\/talhamehmalgmail-com\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/wheelnames.org\/pt-pt\/wp-json\/wp\/v2\/pages\/744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wheelnames.org\/pt-pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wheelnames.org\/pt-pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wheelnames.org\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wheelnames.org\/pt-pt\/wp-json\/wp\/v2\/comments?post=744"}],"version-history":[{"count":11,"href":"https:\/\/wheelnames.org\/pt-pt\/wp-json\/wp\/v2\/pages\/744\/revisions"}],"predecessor-version":[{"id":1000,"href":"https:\/\/wheelnames.org\/pt-pt\/wp-json\/wp\/v2\/pages\/744\/revisions\/1000"}],"wp:attachment":[{"href":"https:\/\/wheelnames.org\/pt-pt\/wp-json\/wp\/v2\/media?parent=744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}